如何在基于视图的NSTableView中使用CoreData填充NSPopupButton

4
我正在使用基于视图的 NSTableViews,通过绑定和数组控制器与核心数据填充。一切都很好 - 带有文本和按钮的单元格以及带有图像和文本的单元格 - 我也可以编辑文本等。
但我无法弄清楚并且已经在各处搜索了如何填充弹出菜单。有两个数组控制器,一个用于表视图,一个用于弹出按钮菜单项。
我尝试了传统方法将弹出菜单绑定起来:通过绑定内容(arrangedObjects 到 entity Place),内容值(arrangedObjects Place.name)和选定对象(Table Cell View objectValue.places.name)。
难道所有控件不应该都像基于视图的表视图中的正常控件一样工作吗?然而,菜单没有被填充。但是,如果 tableView 的实体已经具有设置值/关系,则正确显示该值。
任何帮助都会非常感谢。
谢谢, Dan
2个回答

5

我认为这里有个bug,我遇到了完全相同的问题。以下是我的解决方法:

不要直接在IB中将弹出按钮绑定到数组控制器,而是在nib的File's Owner中放置一个outlet(命名为arrayController)到NSArrayController,并像这样绑定弹出按钮:

settings


1
确认。这个解决方法对我也有效。 - Byron
我在这里放了一个演示应用程序:https://github.com/zehrer/NSPopUpButtonDemo,它使用了这个解决方法。但这真的是一个错误吗? - Stephan
1
看起来Lukas在这里写了一个更详细的问题描述:https://dev59.com/gW7Xa4cB1Zd3GeqPlxee - Stephan
@Mickaël 的解决方案对我在 基于视图的 NSTableView 中也没有用,但在单元格模式和 NSCollectionView 中效果很棒。 - Benoît Lahoz
为了使这个解决方法起作用,我还必须设置表视图的委托输出口。 - Sbhklr
显示剩余2条评论

1

查看这个:

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaBindings/Tasks/onerelation.html

http://www.tbef.se/blog/2006/08/31/core-data-bindings-nstableview-and-nspopupbuttoncell/

请检查是否只设置了3个参数!!

内容
绑定到:LanguagesArrayController
控制器关键字:arrangedObjects
模型关键路径:

内容值
绑定到:LangsArrayController
控制器关键字:arrangedObjects
模型关键路径:name

已选对象
绑定到:CoursesArrayController
控制器关键字:arrangedObjects
模型关键路径:language


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接