我想将NSPopUpButton的选择绑定到其中一个预定义值。为了简化,想象一下博客应用程序:我有BlogPost
和Category
个实体(核心数据,虽然没关系),每个BlogPost
对象都有一个链接Category
个对象(通过category
属性)。
我想让用户通过NSPopUpButton更改类别,所以在我的XIB中,我有NSArrayController,它包含所有可能的类别,我将按钮的内容值绑定到:
这个很好的填充弹出所有类别的标题。我还可以将 Selected Object 绑定到:
Blog
对象)这样可以在弹出窗口中选择正确的类别,但更改选择不会更改提交博客帖子的类别,而是将帖子类别的标题更改为所选值。
鉴于上述绑定,这实际上是有意义的,所以我的下一步是将弹出窗口内容值的绑定更改为仅仅 arrangeObjects (无模型键),类似选择的对象。这项工作和更改选择确实将博客帖子的category
更改为另一个。 但是它不会在弹出菜单中显示类别标题,而是显示该类别的description
(在核心数据中以<Category 0x1002b6990> (entity: Category; id: .......)
结尾。
哪个也有意义,所以我介绍了自定义NSValueTransformer
(不可逆)。这修复了弹出菜单中的项目描述,但随后选择不起作用。我也尝试在选定的对象绑定上使用变换器,但这只是完全禁用我的弹出窗口(可能需要反向变换,但这会使变换器变得复杂)。
我错过了一些明显的东西 - 这是否可以完全用绑定来实现,而不在控制器层上引入额外的代码?
欢迎任何人欢迎!
PS:希望以上文字有道理:))
答案 0 :(得分:8)
我会尝试如下:
NSPopupButton:
arrangedObjects
arrangedObjects
模型键路径: title (empty)
模型关键路径: content.category