2

虽然我在自定义 NSCollectionView 方面取得了长足的进步,但感谢我在这里和网络上的提示,我遇到了一些困难,希望有人能提供帮助。我有一个包含有关视频文件的信息的核心数据实体和一个显示每个视频的缩略图预览的 NSCollectionView。我在 NSCollectionView 上设置了绑定。

在我第一次尝试设置绑定时,我在类模式下设置了我的数组控制器,并将它的内容绑定到一个 NSMutableArray,我正在用 windowDidLoad 中的视频实体中的所有对象填充它。我在数组控制器上执行 addObject 以让它们显示出来。这工作得很好,除了如果你有很多对象要加载需要相当长的时间。

所以...当可以将 NSCollectionView 直接绑定到 Core Data 时,将所有对象复制到数组中对我来说似乎很愚蠢。我将 ArrayController 更改为实体模式,并将托管对象上下文设置为指向我的 App Delegate 的 managedObjectContext。当我启动我的应用程序时,窗口显示在屏幕上之前会有一段延迟。事实上,我在 windowDidLoad 过程中所做的其他事情是立即进行的,但窗口显示还需要 5-10 秒。完成后,NSCollectionView 中不会显示任何内容。

我最初认为它只是不工作,直到我不小心调整了窗口的大小并且所有项目都显示在集合视图中。我试图看看是否有办法知道窗口何时实际显示,以便我可以调用 [collectionView setNeedsDisplay:YES] 但要么它不起作用,要么我没有在正确的地方调用它。

有谁知道为什么这些对象不只是出现?我还希望窗口立即显示,然后集合视图从核心数据加载项目。直接从 Core Data 加载似乎比将项目复制到数组要快得多。我很乐意发布您想查看的任何代码,尽管由于绑定是在 IB 中设置的,因此没有太多可显示的内容。:)

谢谢!

4

0 回答 0