【问题标题】:Check if UICollectionViewCell already created to avoid reuse检查是否已创建 UICollectionViewCell 以避免重用
【发布时间】:2015-11-01 12:44:26
【问题描述】:

我会尽量简短。

情况

假设我有 5 个单元格,我正在对放置在单元格内的 UIView 执行某种“方法”(作为子视图)。 我需要这个“方法”只发生一次(当单元初始化时),并避免这个“方法”在cellForItemAtIndexPath 上再次发生。

我的尝试

  • UICollectionViewCell 子类中,声明布尔值var alreadyCreated = false 并检查cellForItemAtIndexPath 内部是否属性为False - 表示它尚未创建。然后运行“方法”并将属性更改为True问题 - 因为即使对于尚未创建的单元格的重用,它也将属性 alreadyCreated 设置为 true。

任何建议如何确定即使在重用单元格时也已创建单元格?

谢谢大家!

【问题讨论】:

    标签: ios initialization uicollectionview uicollectionviewcell reusability


    【解决方案1】:

    好了,我终于明白问题所在了!

    这实际上非常简单,因为跟踪它的列表已经存在。这是数据模型。

    因此,在cellForRowAtIndexPath: 中,您正在查看此部分/行的数据模型并使用该信息填充单元格。

    嗯,在该数据模型中,您还需要一个以 false 开头的 Bool 值,并且(在 cellForRow 中)如果它是 false,则将其切换为 true 并执行一次性操作配置。这样,您最终会为表格的每个明显行只执行一次此任务。

    真的,这与我使用需要从 Internet 下载的图像填充单元格时完全相同。我如何知道我是否下载了这一行的图像?因为图像就在模型中!如果那里,我知道我需要开始下载它。如果它那里,我已经完成了这项工作,我只是提供图像。因此,每行的图像最多下载一次。

    【讨论】:

    • Matt,你真是个了不起的人,你帮我,我有机会和你一起开聊天室吗?我不知道该怎么做大声笑
    【解决方案2】:

    这不是最好的方法,但您可以存储单元格的索引,方法已经完成。当cellForItemAtIndexPath 时,您可以检查当前 indexPath 是否包含在数组中。如果你只有一个部分,你可以只存储Int's。

    【讨论】:

    • 这是我最后的选择,我也想过,我尽量避免。我敢肯定有比这更好的选择,我的意思是它非常基本的东西吗?
    猜你喜欢
    • 2010-09-08
    • 2021-10-26
    • 2013-09-17
    • 2019-12-14
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2016-05-16
    • 2011-05-06
    相关资源
    最近更新 更多