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(这是为细胞)线性(我想要的)
只需取消选中预取,就可以像迁移之前那样正常工作