具有多个 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 单元格
具有多个单元格模板的 CollectionView(使用未声明的类型,<typeName> 在此上下文中的类型查找不明确)
一个 Viewcontroller 中的多个 collectionview 导致 Index out of range 错误