首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绑定到NSPopUpButtonCell的图像属性?

如何绑定到NSPopUpButtonCell的图像属性?
EN

Stack Overflow用户
提问于 2013-12-04 06:09:02
回答 1查看 101关注 0票数 0

我已经创建了一个NSTableView,并设置了我的所有绑定(通过一个NSArrayController)。我希望其中一个列有一个NSPopUpButtonCell,但是,我希望它不是显示文本,而是显示一个图像--这样用户就可以从popup control中更改图像。

我的列被绑定(使用SelectedObject绑定)到正确的属性,而NSPopUpButtonCell被绑定(使用ContentValues绑定)到我的完整图像列表(来自包含图像名称数组的另一个NSArrayController - NSStrings)。

我创建了一个NSValueTransformer来将图像名(NSString)转换为NSImage,并通过创建一个带有NSImageCell的加法列来测试它的工作原理,并且正确地显示了图像。

有办法这样做吗?

我希望我可以将绑定定位到NSPopUpButtonCellimage属性,而不是它的title属性。

编辑:我的想法是尝试使用带有嵌入式图像的NSAttributedString。但是,问题仍然存在,因为我希望绑定使用setAttributedTitle,而不是setTitle

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 16:03:40

经过多次的反复试验,我终于解决了这个问题。我确信仍然有一个更正确的解决方案,但就目前而言,这还可以。

我的解决方案:

  • 将Pop >菜单更改为自定义类

代码语言:javascript
复制
- ​

  • 在自定义类中,从NSMenu:继承
    • @interface RSMenu : NSMenu

  • 重写insertItemWithTitle,并根据自己的需要进行自定义。

例如:

代码语言:javascript
复制
-(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;
}

其结果是:

希望这能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20368229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档