我有一个自定义NSTableView
子类,可以自己处理选择。选择行时NSPopUpButtonCell
的默认行为是将文本的颜色和小箭头的颜色更改为白色,如下所示:
我需要模仿这种行为。我尝试使用以下代码设置菜单项的属性字符串:
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]
如何实现这种效果?