0

我有一个NSCollectionView,它需要加载大约 1000 个项目(项目只包含文本,没有图像或其他丰富的东西)。

我想NSProgressIndicator在 UI 上旋转以让用户知道它正在工作,但发现指示器出现在 UI 上并且根本不旋转。事实上,整个 UI 在NSCollectionView加载数据时被挂起,似乎NSCollectionView任务占据了该绑定任务的 100% 的主线程。

绑定发生时我有可能NSProgressIndicator旋转吗?

编辑:

我使用了一个 NSArrayController 作为数据源,并将 NSCollectionView 的内容绑定到 arrayController.arrangedObjects,当新的项目添加到 arrayController 时,collectionView 会自动更新。

如果我将绑定任务放到辅助线程中,我观察到每个项目一个接一个地出现在 UI 上,每个项目大约需要 0.5 秒,因为要绑定大约 1000 个项目,任务需要太长时间才能完成.

我正在寻找的是,当我想将新项目绑定到 collectionView 时,绑定在主线程中运行,progressIndicator 平稳旋转,当整个加载任务完成时,collectionView 更新,progressIndicator 消失了。

4

1 回答 1

0

您需要将 NSCollectionView 的项目加载移动到辅助线程,这样它就不会阻塞主事件循环(NSProgressIndicator 计时器正在运行的地方)。参见SourceView示例代码项目;特别是 IconViewController.m 源文件中的 gatherContents: 方法。

于 2015-03-30T15:19:19.387 回答