NSCollectionView细胞订单更改视图更改

问题描述:

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

这一切工作正常,但是当我切换到另一个视图控制器,然后回到初始视图控制器时,集合视图的顺序无缘无故改变。我没有对数据源进行任何更改(这是一个NSMutableArray),我不添加/删除任何单元格,也不打电话给reloadData。我不明白为什么集合视图单元格的顺序不断变化。

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

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

我已经尝试了很多不同的解决方案,似乎没有任何工作。有没有人有任何想法,我可以测试/试用,为了找出什么是错的?

另类想法

我可以使用,而不是NSTableView,因为它支持多列(不像UITableView)。所以我可以制作一个带3列的NSTableView。这种方法会不会比NSCollectionView更糟糕(特别是如果我想添加大量单元?)。

谢谢你的时间,丹。

+0

显示“itemForRepresentedObjectAt”的代码 – brianLikeApple

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

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

+2

我敢打赌,您错误地使用了NSCollection。它不应该是这样,这就是为什么我要求代码如何呈现数据。这取决于你想要做什么,但是在调整窗口大小时,集合视图显然具有更好的交互视图。检查iBooks应用程序,它使用NSCollectionView。 NSTableView具有更好的性能,但我只将它用于网格视图。 – brianLikeApple