UICollectionView cellForItem调用不正确

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

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

我有水平的UICollectionViewFlowLayout CollectionView和设置分页设置为true

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

我滚动UICollectionView向右滚动cellForItem(UICollectionViewDataSource函数)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有没有改变?

从Swift 2.2迁移到Swift 3之后

UICollectionView在iOS10预取设置为true(默认)

所以cellForItem不被称为线性序列

我在这篇文章中得到了一点点cocoa的暗示

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

所以事件调用cellForItem(这是为细胞)线性(我想要的)

只需取消选中预取,就可以像迁移之前那样正常工作

在这里输入图像说明