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

时间:2014-10-01 16:12:38

标签: ios iphone swift uicollectionview

场合

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

  • 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 个答案:

答案 0 :(得分:0)

我发现了问题。

我不小心与两个视图共享了相同的UICollectionViewFlowLayout对象。问题的症状非常奇怪,因为有几个方面工作正常。

使用单独的流对象后,UI会按预期执行。