Я показываю кнопки в NSMatrix.Отображение изображения перед текстом в NSButtonCell в NSMatrix
Мое требование:
изменить цвет заголовка кнопки и поместить изображение в начале заголовка, когда определенное условие.
Для этого я использовал следующий код:
// setting attributed text
NSAttributedString *selectedCellAttribute;
NSFont *selectedCellFont = [NSFont fontWithName:@"Lucida Grande" size:11];
NSColor *selectedCellColor = [NSColor redColor];
NSMutableParagraphStyle *style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setAlignment:NSCenterTextAlignment];
// setting image
NSTextAttachment *imageAttachment = [[NSTextAttachment alloc] init];
NSCell *cell = [imageAttachment attachmentCell];
[cell setImage:[NSImage imageNamed:@"caution_small.png"]];
NSDictionary *selectedCellDictionary = [NSDictionary dictionaryWithObjectsAndKeys:imageAttachment,NSAttachmentAttributeName,selectedCellFont,NSFontAttributeName,selectedCellColor,NSForegroundColorAttributeName,style,NSParagraphStyleAttributeName,nil];
// recognizing cell
NSButtonCell *associatedCell = [associatesMatrix cellAtRow:0 column:2];
selectedCellAttribute = [[NSAttributedString alloc] initWithString:[associatedCell title] attributes:selectedCellDictionary];
[associatedCell setAttributedTitle:selectedCellAttribute];
Хотя приведенный выше код, показывающий изменение цвета заголовка, оно не показывая изображение помещается в начале названия :(
Может кто-нибудь предложить мне, где я могу быть неправым или какой-либо другой метод, чтобы реализовать мои требования
EDIT:
В строке:
NSCell *cell = [imageAttachment attachmentCell];
он дает это предупреждение при компиляции:
type 'id <NSTextAttachmentCell>' does not conform to 'NSCopying" protocol.
Спасибо,
Miraaj
Не забудьте выпустить стиль изменяемого абзаца, вложение и приписанную строку, если вы не используете GC. –
thanx для вашего ответа ... приложение включено GCC! – Devarshi
Вы имели в виду GC? GCC - сборник компиляторов GNU, и какой компилятор вы используете, не имеет значения. GC - сборник мусора, в соответствии с которым отправка сообщений Objective-C 'release' не является строго необходимой (но не делать этого - это хороший способ получить нежные напоминания о том, что« вам нужно освободить эти вещи, если вы не используете GC », когда вы отправьте код на Stack Overflow ☺). –