cocoa - 更新 NSCollectionViewItem 实例中的 NSTableView

标签 cocoa nstableview nscollectionview

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

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

如果我在 NSBox 的子类中创建 IBOutlet,则该实例的 IBOutlet 为零,因此我无法通过它调用它。

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

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

有人有过在 NSCollectionViewItem 的 View 上使用 NSTableView 的经验吗?您是如何更新表格的?

最佳答案

将 NSBox(及其 NSTableView)放入其自己的 Nib 中。每次创建新的 Collection View 项时,加载 Nib ,将该 NSBox 设置为 Collection View 项的 View ,然后释放 NSBox。

对于提供 TableView ,最简单的方法可能是绑定(bind)。将 TableView 的每一列绑定(bind)到 Collection View 项表示的模型对象的不同属性。当然,您可能需要使用数组 Controller ,这意味着每个 Collection View 项都有一个数组 Controller ,并将它们添加到数组中,您将在 dealloc 中释放该数组。 p>

关于cocoa - 更新 NSCollectionViewItem 实例中的 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388550/

相关文章:

cocoa - 在没有 didFinishLaunchingWithOptions 的情况下显示本地通知 :

ios - 如何将对象添加到数组?

objective-c - 如何设置 NSTableCellView 的背景颜色?

objective-c - NSScrollView 中的 NSTableView 在哪里?

objective-c - NSTableColumn 大小以适合内容

swift - NSCollectionView 在创建项目时崩溃

objective-c - 子类化 NSCollectionView 后的绘图问题

cocoa - 将 NSData 转换为 NSString

cocoa - 访问 NSCollectionView View 的控件

cocoa - Core Data 内部方法崩溃 (SIGSEGV)