【问题标题】:UICollectionView cellForItem called not correctlyUICollectionView cellForItem 调用不正确
【发布时间】:2017-06-21 16:15:52
【问题描述】:

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

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

我有带有水平 UICollectionViewFlowLayout 的 CollectionView 并设置分页集为真

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?

【问题讨论】:

    标签: ios swift2 swift3 uicollectionview


    【解决方案1】:

    从 Swift 2.2 迁移到 Swift 3 之后

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

    所以 cellForItem 没有被称为线性序列

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

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

    所以有些时候没有线性调用 cellForItem(这是用于单元格)(我想要什么)

    只需取消选中预取启用它就可以像迁移之前一样正常工作

    【讨论】:

    • 这是救命的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多