首页 文章

UICollectionView cellForItem调用不正确

提问于
浏览
0

将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 回答

  • 6

    从Swift 2.2迁移到Swift 3之后

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

    所以cellForItem不被称为线性序列

    我在这篇文章中得到了一个提示little bites of cocoa

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

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

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

    enter image description here

相关问题