Cocoa绑定问题与三个tableviews

时间:2015-01-11 21:18:22

标签: macos cocoa cocoa-bindings nsarraycontroller

我是一个尝试使用三个表视图构建应用程序的osx-dev noob,它将显示核心数据存储实体的内容。但是每个表视图都在实体的属性“status”上进行过滤。

当我还想在文本字段中显示所选实体时,会出现问题。我正在使用具有不同获取谓词的三个不同阵列控制器。但是在文本字段中,我只能将值绑定到一个数组控制器。

我应该抛弃绑定并以编程方式完成所有操作,还是有一个简单的解决方案? :)

这是一个截图,以便您可以掌握我的应用说明。 enter image description here

1 个答案:

答案 0 :(得分:0)

如果文本字段满足您对此GUI的要求,则保持绑定以填充文本字段。我添加NSObjectController来控制这些字段所代表的一个实体。如果您希望用户对这些字段的更改保持不变,那么绑定仍然很棒。

但我认为有三个表可以控制文本字段中显示的内容,您需要使用某种非绑定的粘合代码来确定哪些表获胜。您可以通过实施某些NSTableViewDelegate协议来完成所需的一切。

如果文本字段应显示用户在任何表中单击的最后一个实体,则只需让每个表调用相同的tableViewSelectionDidChange委托函数。所有三个表都可以具有相同的委托。然后,您可以从该功能调用setContent上的NSObjectController

您也可以使用类似的胶水代码来防止三个表中的任何一个选择,通过使用相同的委托功能,可以通过视图或控制器取消选择其他表中的所有内容。但这取决于你,需要考虑你是否想要多重选择等等。