未正确调用的UICollectionView cellForItem

时间:2017-02-04 09:29:30

标签: ios swift2 swift3 uicollectionview

Xcode 8.2.1 将Swift 2.2迁移到Swift 3之后

UICollectionView的cellForItem未正确调用但在迁移工作正常之前

我有CollectionView with Horizo​​ntal UICollectionViewFlowLayout 并设置分页集为真

UIViewController的视图框架与UICollectionView的框架相同,也是单元格的框架,如页面应用程序(全尺寸)

当我将UICollectionView向右滚动时,我在cellForItem(UICollectionViewDataSource func)中打印indexPath.row

indexPath.row打印在

之后

0, 3, 4, 5, 6, 7, 8, 9, 10

然后在上次打印10

时滚动到相反方向

下一个indexPath是7,但它应该是9,因为上次调用的索引是10

并滚动直到显示第一个单元格

6, 5, 4, 3, 2, 1, 0已打印

为什么会出现这种情况?

在迁移之前的Swift 2.2中,正​​常工作

是否在Swift 3或iOS 10之后更改为UICollectionView或UICollectionViewFlowLayout?

1 个答案:

答案 0 :(得分:6)

从Swift 2.2迁移到Swift 3之后

UICollectionView在iOS10中预取设置为true(默认情况下)

所以cellForItem没有被称为线性序列

我在这篇文章little bites of cocoa

中得到了提示

预取是数据源而不是单元格

所以有些人不会线性调用cellForItem(这是针对单元格)(我想要的)

只需取消选中预取功能就可以像迁移前一样正常工作

enter image description here