我已经创建了一个NSTableView,并设置了我的所有绑定(通过一个NSArrayController)。我希望其中一个列有一个NSPopUpButtonCell,但是,我希望它不是显示文本,而是显示一个图像--这样用户就可以从popup control中更改图像。
我的列被绑定(使用SelectedObject绑定)到正确的属性,而NSPopUpButtonCell被绑定(使用ContentValues绑定)到我的完整图像列表(来自包含图像名称数组的另一个NSArrayController - NSStrings)。
我创建了一个NSValueTransformer来将图像名(NSString)转换为NSImage,并通过创建一个带有NSImageCell的加法列来测试它的工作原理,并且正确地显示了图像。
有办法这样做吗?
我希望我可以将绑定定位到NSPopUpButtonCell的image属性,而不是它的title属性。
编辑:我的想法是尝试使用带有嵌入式图像的NSAttributedString。但是,问题仍然存在,因为我希望绑定使用setAttributedTitle,而不是setTitle。
发布于 2013-12-17 16:03:40
经过多次的反复试验,我终于解决了这个问题。我确信仍然有一个更正确的解决方案,但就目前而言,这还可以。
我的解决方案:

- 
@interface RSMenu : NSMenu
insertItemWithTitle,并根据自己的需要进行自定义。例如:
-(NSMenuItem *)insertItemWithTitle:(NSString *)aString
action:(SEL)aSelector
keyEquivalent:(NSString *)charCode
atIndex:(NSInteger)index {
NSImage *image = [NSImage imageNamed:aString];
NSMenuItem* menuItem = [super insertItemWithTitle:image ? @"" : aString
action:aSelector
keyEquivalent:charCode atIndex:index];
if ( nil != image ) {
[menuItem setImage:image];
}
return menuItem;
}其结果是:

希望这能帮到别人。
https://stackoverflow.com/questions/20368229
复制相似问题