Xcode 8.2.1 将Swift 2.2迁移到Swift 3之后
UICollectionView的cellForItem未正确调用但在迁移工作正常之前
我有CollectionView with Horizontal 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?
答案 0 :(得分:6)
从Swift 2.2迁移到Swift 3之后
UICollectionView在iOS10中预取设置为true(默认情况下)
所以cellForItem没有被称为线性序列
我在这篇文章little bites of cocoa
中得到了提示预取是数据源而不是单元格
所以有些人不会线性调用cellForItem(这是针对单元格)(我想要的)
只需取消选中预取功能就可以像迁移前一样正常工作