将Swift 2.2迁移到Swift 3后的Xcode 8.2.1
UICollectionView的cellForItem未正确调用但在迁移之前工作正常
我有CollectionView与水平UICollectionViewFlowLayout并设置分页设置为true
UIViewController的视图框架与UICollectionView的框架相同,也是单元格的框架,如页面应用程序(全尺寸)
当我将UICollectionView向右滚动时,我在 cellForItem
(UICollectionViewDataSource func)中打印indexPath.row
indexPath.row打印如下
0, 3, 4, 5, 6, 7, 8, 9, 10
最后打印时滚动到相反方向 10
next indexPath是 7
但它应该是 9
,因为最后一个被调用的索引是 10
并滚动直到第一个单元格显示
6, 5, 4, 3, 2, 1, 0
已打印
为什么会出现这种情况?
在迁移之前的Swift 2.2中,工作正常
在Swift 3或iOS 10之后有更改为UICollectionView或UICollectionViewFlowLayout吗?
1 回答
从Swift 2.2迁移到Swift 3之后
UICollectionView在iOS10中预取设置为true(默认情况下)
所以cellForItem不被称为线性序列
我在这篇文章中得到了一个提示little bites of cocoa
预取是用于数据源而不是用于单元格
所以有些人不会线性调用cellForItem(这是针对单元格)(我想要的)
只需取消选中预取功能就可以像迁移前一样正常工作