【发布时间】:2018-03-23 07:28:09
【问题描述】:
我有一个包含标签栏设计的 macOS 应用程序(即:Tweetbot)。有 4 个选项卡链接到 4 个不同的视图控制器。初始视图控制器(视图一)包含一个NSCollectionView,它水平显示 3 个单元格。
这一切都很好,但是当我切换到另一个视图控制器然后返回到初始视图控制器时,集合视图的顺序会无缘无故地改变。我没有对数据源(NSMutableArray)进行任何更改,也没有添加/删除任何单元格,也没有调用reloadData。我不明白为什么集合视图单元格的顺序不断变化。
我已经做了一些测试,可以确认我的数据源中的数据顺序完全没有改变。所以对于集合视图来说,仅仅改变单元格的顺序是没有意义的。
我注意到的另一个奇怪问题是,如果我将集合视图限制为 2 个单元格,则不会发生此问题。这让我想知道,问题是否归结为某种在后台运行的NSCollectionView 缓存方法?也许当集合视图回收一个单元格时,它使用了不正确的数据??
我尝试了很多不同的解决方案,但似乎没有任何效果。有没有人知道我可以测试/尝试什么,以便找出问题所在?
另类想法
我可以改用NSTableView,因为它支持多列(与UITableView 不同)。所以我可以用 3 列创建一个 NSTableView。这种方法在性能方面会比NSCollectionView 更差(特别是如果我想添加很多单元格?)。
感谢您抽出宝贵时间,丹。
【问题讨论】:
-
显示“itemForRepresentedObjectAt”的代码
标签: objective-c macos cocoa nscollectionview nscollectionviewitem