我有一个窗口,其中包含通过 Interface Builder 创建的 NSCollectionView。有一个 NSArrayController 绑定(bind)到 CoreData 后备存储,该存储在启动时通过触发异步请求进行填充。 NSCollectionView 到 NSArrayController 的绑定(bind)等似乎都已就位;但是,该窗口会显示并且是空白的,直到单击该窗口、调整其大小等以强制其重绘。
以下是我尝试过的一些内容,没有任何明显的变化。 (这些在NSWindowController类中)
1) 使用 KVO 监视 CoreData 获取何时完成。此时我已经尝试了以下所有方法:
[collectionView setNeedsDisplay:YES];
[[self window] setViewsNeedDisplay:YES];
[[self window] flushWindowIfNeeded];
2)添加了一个 NSProgressIndicator,在启动时隐藏 NSCollectionView,然后当加载完成时(再次通过监视 KVO),我隐藏进度指示器并显示 Collection View 。
有人对我在这里做错了什么有提示/线索吗?
似乎让事情开始运转。
最佳答案
感谢一位 friend 在 Twitter 上看到了此链接,我有了一个解决方案。一旦我的 KVO 触发,添加一个调用:
[arrayController fetch:self];
似乎让事情开始运转。
关于objective-c - NSWindow 在单击、调整大小等之前不会绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5325980/