NSCollection在视图更改时查看单元格顺序更改



我有一个macOS应用程序,它包含一个选项卡栏设计(即:Tweetbot)。有4个选项卡链接到4个不同的视图控制器。初始视图控制器(视图一)包含一个水平显示3个单元格的NSCollectionView

这一切都很好,但当我切换到另一个视图控制器,然后返回到初始视图控制器时,集合视图的顺序会无故更改。我没有对数据源(NSMutableArray)进行任何更改,也没有添加/删除任何单元格,也没有调用reloadData。我不明白为什么集合视图单元格的顺序一直在更改。

我已经做了一些测试,可以确认我的数据源中的数据顺序根本没有改变。因此,对于集合视图来说,仅仅更改单元格的顺序是没有意义的。

我注意到的另一个奇怪的问题是,如果我将集合视图限制为2个单元格,则不会出现此问题。这让我想知道,问题是否在于某种在后台运行的NSCollectionView缓存方法?也许当集合视图回收单元格时,它使用了不正确的数据??

我尝试了很多不同的解决方案,但似乎都不起作用。有人知道我可以测试/尝试什么,以找出问题所在吗?

替代方案

我可以使用NSTableView,因为它支持多列(与UITableView不同)。所以我可以制作一个有3列的NSTableView。这种方法的性能会比NSCollectionView差吗(尤其是如果我想添加很多单元格的话?)。

我找不到集合视图有什么问题。因此,我最终使用了一个具有多列(而不是集合视图行)的NSTableView。我将每列设置为有一行(索引0),这使得表视图看起来与我使用的集合视图完全相同。

就性能而言,表视图似乎也要好得多。即使有数百列,它在滚动/交互时仍然很流畅。

最新更新