改变NSPopUpButtonCell的外观?

时间:2011-07-19 14:55:43

标签: objective-c cocoa macos nstableview

我有一个自定义NSTableView子类,可以自己处理选择。选择行时NSPopUpButtonCell的默认行为是将文本的颜色和小箭头的颜色更改为白色,如下所示:

Normal selected NSPopUpButton behavior

我需要模仿这种行为。我尝试使用以下代码设置菜单项的属性字符串:

NSDictionary *attributes = [NSDictionary
                            dictionaryWithObjectsAndKeys:
                            [NSColor whiteColor], NSForegroundColorAttributeName,
                            [NSFont systemFontOfSize: [NSFont systemFontSize]],
                            NSFontAttributeName, nil];

for (NSInteger i = 0; i < [(NSPopUpButtonCell*)aCell numberOfItems]; i++) {
    NSMenuItem *item = [(NSPopUpButtonCell*)aCell itemAtIndex:i];

    NSAttributedString *as = [[NSAttributedString alloc] 
                              initWithString:[item title]
                              attributes:attributes];

    [item setAttributedTitle:as];
}

这会更改文本的颜色,但是当您弹出菜单时,它会在每个菜单项上保持白色。它也不会改变文本旁边的小箭头的颜色。直接设置attributedTitle的{​​{1}}似乎没有任何效果。

我真的希望在某个地方我会翻转某种旗帜,比如NSPopUpButtonCell或其他东西,但如果它存在,我似乎无法弄清楚它会是什么。 [aCell isSelectedInTableView:YES]如何实现这种效果?

0 个答案:

没有答案