是否有可能在 NSCollectionView 绑定大量数据时使 NSProgressIndicator 旋转?

Is that possible to make a NSProgressIndicator spin while NSCollectionView is binding massive data?

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

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

我可以在绑定时进行 NSProgressIndicator 旋转吗?

编辑:

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

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

我正在寻找的是,当我想将新项目绑定到 collectionView 时,绑定会在 progressIndicator 平稳旋转的情况下从主线程运行,并且当整个加载任务完成时,collectionView 会更新并且 progressIndicator没了。

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