想象一下,如果您要创建一个具有两个实体(员工和部门)的核心数据应用程序。员工与部门(部门)具有一对一的关系,而反之则是一对多关系(员工)。在UI中,您可以选择单个Employee实体,并在详细信息区域中编辑详细信息(当然还有其他属性,并且有UI用于添加和编辑Department实体)。使用弹出按钮时,绑定为:

内容= PopUpArrayController.arrangedObjects
 内容值= PopUpArrayController.arrangedObjects.name(名称为NSString)
 所选对象= EmployeeArrayController.selection.department.name

这样可以在弹出菜单中查看所有部门,正确选择当前员工的部门,并允许按预期更改该部门。目的是为NSComboBox更改此设置,以便用户可以跳至该框并输入部门名称,而无需切换到鼠标。我尝试了许多不同的绑定来完成此任务。使用这些绑定,我什至可以运行一次:

内容= PopUpArrayController.arrangedObjects.name
 值= EmployeeArrayController.selection.department.name

至少一次可以按预期工作(当输入的文本与任何现有部门都不匹配时,它甚至添加了一个新部门)。但是,现在它将显示可用的部门并自动完成,但是当组合框中的值更改时,不会使用正确的值更新模型。如果通过弹出窗口设置或更改了部门,则组合框中将显示正确的部门。

有人知道我在想什么吗?谢谢。

最佳答案

因此,我已经找到了至少一个解决此问题的方法。简短的版本是没有一种方法可以仅使用绑定来实现此效果。我终于在网上找到了http://frankschmitt.org/2007/06/comboboxen,这给了我足够的细节来解决问题(尽管文章中的代码格式存在一些问题,但是NSValueTransformer的文档填补了空白)。

10-07 19:17
查看更多