【问题标题】:iOS: cellForItemAtIndexPath returns nil even though cell is visibleiOS:即使单元格可见,cellForItemAtIndexPath 也会返回 nil
【发布时间】:2015-10-04 10:53:38
【问题描述】:

我有一个集合视图,并且我已经实现了拖放功能。此外,当单元格靠近顶部或底部边缘时,我会以恒定速度滚动集合。

当我拖动单元格时,我会根据手势设置其变换属性,并在滚动时修改值。我还更改了索引路径的布局属性的转换属性。 单元格始终位于屏幕上的手势位置。但是,在某些时候,集合决定隐藏单元格,并且 cellForItemAtIndexPath 返回 nil。

为什么会发生这种情况,我该如何防止这种情况发生?

【问题讨论】:

  • 您是否尝试在“visibleCells”数组中进行搜索?
  • 是的。细胞确实不见了
  • 因此,一旦您开始处理单元格,请将其保存在 ivar 中(因此保留)并保存其索引。如果系统要求您提供该索引的单元格,请返回您保留在 ivar 中的那个(这就是您需要知道 indexPath 的原因)。拖放完成后,您可以将 ivar 设为 nil(并保存 IndexPath)。
  • 我使用 dequeueReusableCellWithReuseIdentifier 检索单元格,所以我认为该集合会将其排入队列,不是吗?我认为即使它被 ivar 保留,我也无法继续使用它
  • 正确持有它不要尝试出列它。你问如何解决这个我告诉你如何,所以试试吧

标签: ios cocoa uicollectionview uicollectionviewlayout


【解决方案1】:

我也有同样的问题。在请求对单元格的引用之前,我通过调用layoutIfNeeded 来解决它。

self.collectionView.layoutIfNeeded()

cellForItemAtIndexPath returns nil after force scrolling to make it visible

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多