这让我困惑了几个小时......
我有一个具有属性 (NSMutableArray *cuesArray)
和其他一些属性的对象 (CuesDoc)。 cues
数组包含多个 Cue
对象。在我的 AppDelegate
中有一个名为 (CuesDoc*) currentCuesDoc
的属性。
在 IB 中,我有一个 NSArrayController
,它绑定(bind)到 AppDelegate.currentCuesDoc.cuesArray
。
我有一个 view-based NSTableView
绑定(bind)到 NSArrayController
并且可以在表和 cuesArray 中添加/删除/编辑值.到目前为止一切顺利。
我在其下方有详细信息字段,它们绑定(bind)到 NSArrayController.selection
,模型键路径设置为每个属性。
当 View 首次出现时,详细信息字段会填充 TableView 中第一项的内容,但是当我选择其他行时,详细信息字段不会更新以反射(reflect)当前选择。
我在 NSArrayController
的 selectionIndexes
和 selection
中添加了一个观察者,当 View 出现时,我得到了 的调用observeValueForKeyPath:
方法一次,但在更改选择之后不再执行。
最佳答案
对于基于 View 的 NSTableView
,您必须将 tableView 的选择索引绑定(bind)到 selectionIndexes
的数组 Controller 键,以保持 View 的选择与 Controller 的选择同步。选择绑定(bind)与内容绑定(bind)是分开的。较旧的基于单元格的 NSTableView
API 不需要此步骤。
关于objective-c - NSArrayController 选择未使用 NSTableView 绑定(bind)进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649916/