具有多个 collectionView 控制器的 iOS 屏幕错误地调用 cellForItemAtIndexPath

Posted

技术标签:

【中文标题】具有多个 collectionView 控制器的 iOS 屏幕错误地调用 cellForItemAtIndexPath【英文标题】:iOS screen with multiple collectionView Controllers invokes cellForItemAtIndexPath incorrectly 【发布时间】:2014-10-01 16:12:38 【问题描述】:

情况

我的 ios 手机应用在一个屏幕上有 2 个 UICollectionView。所以我对每个逻辑视图都有不同的子类。

AAACollectionViewController:UICollectionViewController、UICollectionViewDataSource、UICollectionViewDelegate AAACollectionView : UICollectionView BBBCollectionViewController:UICollectionViewController、UICollectionViewDataSource、UICollectionViewDelegate BBBCollectionView : UICollectionView

好消息是 AAACollectionViewController.numberOfItemsInSection 在正确的视图上被调用,而 BBBCollectionViewController.numberOfItemsInSection 在正确的视图上被调用。此外,正确调用了正确的 cellForItemAtIndexPath。

AAA 有 2 个细胞,BBB 有 12 个细胞。

问题

但是,BBB.cellForItemAtIndexPath 只被调用了 2 次。

即使我以不同的顺序添加子控制器也是如此:

parent.addChildViewController(AAA)
parent.addChildViewController(BBB)

parent.addChildViewController(BBB)
parent.addChildViewController(AAA)

如果 AAA 有 3 个单元格,则 BBB.cellForItemAtIndexPath 被调用 3 次。

很奇怪。

【问题讨论】:

【参考方案1】:

我发现了问题。

我不小心与两个视图共享了同一个 UICollectionViewFlowLayout 对象。问题的症状很奇怪,在几个方面都很好。

使用单独的流对象后,用户界面按预期执行。

【讨论】:

以上是关于具有多个 collectionView 控制器的 iOS 屏幕错误地调用 cellForItemAtIndexPath的主要内容,如果未能解决你的问题,请参考以下文章

具有多个单元格的 Collectionview 和 diffable 部分

如何使用具有不同滚动方向的多个collectionview滚动整个屏幕

XCUITest:从具有多个单元格原型的多个单元格标识符中选择一个 CollectionView 单元格

具有相同 XIB 单元格和按钮的多个集合视图

具有多个单元格模板的 CollectionView(使用未声明的类型,<typeName> 在此上下文中的类型查找不明确)

一个 Viewcontroller 中的多个 collectionview 导致 Index out of range 错误