我在不同 XIB 中定义的两个窗口中显示一个 NSArrayController 的内容时遇到了一些问题。
在我的主窗口中(在 MainMenu.xib 中),我有一个 NSTableView 绑定到 NSArrayController
在我的第二个 XIB 中,我有另一个包含 NSTableView 的窗口。我创建了一个新的 NSArrayController,并将表绑定到该 NSArrayController 的内容。
两个 NSArrayController 都绑定到完全相同的 NSArray。
一开始一切都很好,但问题是如果在主窗口中使用 NSArrayController 将对象添加到数组中,则辅助窗口的数据视图不会更新。这很可能是因为它不知道自己需要更新自己,因为它的 NSArrayController 没有用于添加新对象。
我想做的是在两个窗口中使用完全相同的 NSArrayController 实例。这样,如果将对象添加到数组中,两个视图都将收到更改通知。
问题是我无法弄清楚如何在 Interface Builder 中执行此操作。我无法将 NSArrayController 绑定到另一个 NSArrayController(我收到一个运行时错误,表明它只能绑定到 NSArray)。将 NSArrayController 连接到 File's Owner 的 NSArrayController 成员也无济于事,因为这只会清除我希望它使用的 NSArrayController。
我想我可以自己在代码中设置绑定,但如果可能的话,使用 Interface Builder 似乎会更好。有没有办法在 Interface Builder 中做到这一点,或者可能有更好的方法来一起设置?
更新:针对 Chuck 的回答和评论,我尝试了以下操作: - 将我的 NSTableView 的表格内容绑定到 NSArrayController 成员的排列对象(如果我使用 NSArrayController 本身,日志中出现错误:“[NSArrayController count] : unrecognized selector sent to instance") - 将表中的每一列绑定到文件的所有者,模型键路径为 arrayController.arrangedObjects.propertyName
这仍然没有导致表的内容得到更新。我认为这是因为我绑定到 NSArrayController 的排列对象,而不是绑定到 NSArrayController 本身。但是,如果我直接绑定到 NSArrayController,那会给我带来错误。
通常,我会从“绑定到”组合框中选择我的 NSArrayController,使用排列对象作为控制器键,并将属性本身作为模型键路径。我不确定在这种情况下如何做同样的事情——如果可以的话。
我在上面的过程中做错了吗?