NSArrayController删除:不会导致“selectionDidChange”

时间:2011-02-16 00:02:30

标签: cocoa nstableview nsarraycontroller

我有一个对象数组,称它们为I1对象。每个I1对象包含一个I2对象数组。

ArrayController1控制IView类型的对象,显示在TableView T1中。

ArrayController2控制类型为I2的对象,显示在TableView T2中。

我使用ArrayController1中的selectionDidChange委托方法来确定在T2中显示哪些对象。

我使用add,(或添加对象)添加和删除I1项,并从模型控制器中删除对ArrayController1的调用。

每件事都运行正常,除了当我从T1列表的中间删除一个项目时,没有将selectionDidChange消息发送给我的委托,所以旧的(已删除的)I1的内容仍然是显示在T2。

我怀疑这与“删除”被推迟到runloop的下一次迭代这一事实有关。

我没有看到删除时注册选择更改的简洁方法。我想,我可以看一下选择索引,并“手动”重置T2的内容,可以这么说。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

好吧,5次观看,我的搜索,没有关于如何自动完成的答案。 (添加对象时,对委托的selectionDidChange消息是自动的,但显然不是在删除时。)

我的解决方案是在处理删除操作时手动设置选择索引。 set selection index确实会导致委托发送didChange消息。