NSCollectionView 单元格顺序在视图更改时更改
NSCollectionView cell order changes on view change
我有一个包含标签栏设计的 macOS 应用程序(即:Tweetbot)。有 4 个选项卡链接到 4 个不同的视图控制器。初始视图控制器(视图一)包含一个 NSCollectionView
水平显示 3 个单元格。
一切正常,但是当我切换到另一个视图控制器然后返回到初始视图控制器时,集合视图的顺序无缘无故地改变了。我没有对数据源(NSMutableArray
)进行任何更改,我也没有 adding/deleting 任何单元格,也没有调用 reloadData
。我不明白为什么集合视图单元格的顺序不断变化。
我已经做了一些测试,可以确认我的数据源中的数据顺序根本没有改变。所以对于集合视图来说,仅仅改变单元格的顺序是没有意义的。
我注意到的另一个奇怪的问题是,如果我将集合视图限制为 2 个单元格,则不会发生此问题。这让我想知道问题是否归结为某种在后台运行的 NSCollectionView
缓存方法?可能collection view在回收cell的时候,使用了不正确的数据??
我尝试了很多不同的解决方案,似乎没有任何效果。有谁知道我可以 test/try 找出问题所在吗?
另类想法
我可以改用 NSTableView
,因为它支持多列(与 UITableView
不同)。所以我可以制作一个包含 3 列的 NSTableView
。这种方法在性能方面会比 NSCollectionView
更差吗(特别是如果我想添加很多单元格?)。
我找不到集合视图有什么问题。所以我最终使用了一个 NSTableView
多列(而不是集合视图行)。我将每一列设置为一行(索引 0),这使得 table 视图看起来与我正在使用的集合视图完全一样。
在性能方面 table 视图似乎也好很多。即使有数百列,在 scrolling/interacting.
时仍然很流畅
我有一个包含标签栏设计的 macOS 应用程序(即:Tweetbot)。有 4 个选项卡链接到 4 个不同的视图控制器。初始视图控制器(视图一)包含一个 NSCollectionView
水平显示 3 个单元格。
一切正常,但是当我切换到另一个视图控制器然后返回到初始视图控制器时,集合视图的顺序无缘无故地改变了。我没有对数据源(NSMutableArray
)进行任何更改,我也没有 adding/deleting 任何单元格,也没有调用 reloadData
。我不明白为什么集合视图单元格的顺序不断变化。
我已经做了一些测试,可以确认我的数据源中的数据顺序根本没有改变。所以对于集合视图来说,仅仅改变单元格的顺序是没有意义的。
我注意到的另一个奇怪的问题是,如果我将集合视图限制为 2 个单元格,则不会发生此问题。这让我想知道问题是否归结为某种在后台运行的 NSCollectionView
缓存方法?可能collection view在回收cell的时候,使用了不正确的数据??
我尝试了很多不同的解决方案,似乎没有任何效果。有谁知道我可以 test/try 找出问题所在吗?
另类想法
我可以改用 NSTableView
,因为它支持多列(与 UITableView
不同)。所以我可以制作一个包含 3 列的 NSTableView
。这种方法在性能方面会比 NSCollectionView
更差吗(特别是如果我想添加很多单元格?)。
我找不到集合视图有什么问题。所以我最终使用了一个 NSTableView
多列(而不是集合视图行)。我将每一列设置为一行(索引 0),这使得 table 视图看起来与我正在使用的集合视图完全一样。
在性能方面 table 视图似乎也好很多。即使有数百列,在 scrolling/interacting.
时仍然很流畅