Отображение изображения перед текстом в NSButtonCell в NSMatrix - PullRequest
0 голосов
/ 23 августа 2010

Я отображаю кнопки в 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];

Хотя приведенный выше код показывает изменение цвета заголовка, он не показывает изображения, помещенного в начало заголовка: (

Может кто-нибудь предложить мнегде я могу ошибаться или какой-то другой способ реализовать мои требования?

РЕДАКТИРОВАТЬ:

В строке:

NSCell *cell = [imageAttachment attachmentCell];

это дает это предупреждение при компиляции:

type 'id <NSTextAttachmentCell>' does not conform to 'NSCopying" protocol.

Спасибо,

Miraaj

1 Ответ

1 голос
/ 23 августа 2010

Вы установили вложение для всей строки. Что вам нужно сделать, это добавить строку к NSAttachmentCharacter и установить вложение только для этого раздела строки.

Возможно, вы захотите поставить пробел между NSAttachmentCharacter и вашим реальным текстом. Только NSAttachmentCharacter должен иметь атрибут вложения.

...