NSArrayController与NSTableView绑定时选择不更新

9

这个问题困扰我已经好几个小时了...

我有一个对象(CuesDoc),拥有一个属性(NSMutableArray *cuesArray)和一些其他属性。 cues数组包含多个Cue对象。 在我的AppDelegate中有一个名为(CuesDoc*) currentCuesDoc的属性。

在IB中,我有一个NSArrayController,它绑定到AppDelegate.currentCuesDoc.cuesArray

我有一个基于视图的NSTableView,它绑定到NSArrayController并且可以添加/删除/编辑表格和cuesArray中的值。 到目前为止都还好。

我在下面添加了详细字段,并将其绑定到NSArrayController.selection,模型键路径设置为每个属性。

当视图首次显示时,详细字段会填充表视图中第一项的内容,但是当我选择其他行时,详细字段不会更新以反映当前的选择。

我为NSArrayController添加了一个观察器,用于selectionIndexesselection,当视图出现时,observeValueForKeyPath:方法会被调用一次,但在更改选择后不会再次调用。

1个回答

21

对于基于视图的NSTableView,您必须将tableView的选定索引绑定到selectionIndexes的数组控制器键,以使视图的选定内容与控制器的选定内容同步。选择绑定与内容绑定分开处理。较早版本的基于单元格的NSTableView API不需要执行此步骤。


2
太好了!成功了。不知道为什么我之前没有单独绑定选择。 - AppCrafter
3
只需要针对基于视图的 NSTableView 进行此操作,对于基于单元格的 NSTableView 不需要。 - Dirk

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