在NSCollectionViewItem的实例中更新NSTableView

时间:2009-09-07 10:01:42

标签: cocoa nstableview nscollectionview

在我的设置中,我有一个连接到mac的卷的NSCollectionView。对于NSCollectionViewItem的视图,我有一个带有NSTableView的NSBox,其中列出了该卷的内容。

尝试在NSTableView中添加/删除项目时出现问题。 NSBox似乎初始化了一次,因此只有一个NSTableView。这意味着当我想更新NSTableView中的数据时,我无法在IBOutlet上调用reloadData并让它更新所有表。

如果我在NSBox的子类中创建一个IBOutlet,它对于实例来说是零,所以我不能通过它调用它。

我最接近的是将@try @catch包围在返回列中某行的对象的代码周围,因为该项不再存在而发生异常,因此我可以获取tableView并调用reloadData,这似乎更新了特定的NSTableView。

问题在于,如果删除的项目位于表的末尾,或者添加了项目,则不会发生异常,因为它可以看到所有现有项目。

有没有人在NSCollectionViewItem的视图上有过使用NSTableView的经验?你是如何更新表格的?

1 个答案:

答案 0 :(得分:1)

将NSBox(及其NSTableView)放入自己的nib中。每次创建新的集合视图项时,加载nib,将NSBox设置为集合视图项的视图,然后释放NSBox。

至于提供表视图,最简单的方法可能是Bindings。将表视图的每一列绑定到集合视图项表示的模型对象的不同属性。当然,您可能想要通过一个数组控制器,这意味着拥有其中一个每个集合视图项,并将它们添加到一个数组中,您将在dealloc中发布它。