2

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

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

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

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

我尝试了很多不同的解决方案,似乎没有任何效果。有没有人知道我可以测试/尝试什么,以找出问题所在?

另类的想法

我可以NSTableView改用,因为它支持多列(与 不同UITableView)。所以我可以NSTableView用 3 列做一个。这种方法在性能方面会比 a 更差NSCollectionView(特别是如果我想添加很多单元格?)。

谢谢你的时间,丹。

4

1 回答 1

0

我无法找出集合视图有什么问题。所以我最终使用了NSTableView多列(而不是集合视图行)。我将每一列设置为一行(索引 0),这使得表格视图看起来与我正在使用的集合视图完全相同。

在性能方面,表格视图似乎也好很多。即使有数百列,滚动/交互时它仍然很流畅。

于 2017-10-12T15:52:16.000 回答