【问题标题】:iOS Swift: Prepare collectionView cell for reuseiOS Swift:准备 collectionView 单元以供重用
【发布时间】:2015-03-29 00:42:00
【问题描述】:

我遇到了一些意外的细胞回收行为。我有一个带有自定义单元格的 UICollectionView,每个单元格都包含一个 UITableView,它可以显示两种类型的自定义单元格(imageCell 或 movieCell)中的一种。

当 collectionView 单元被回收时,自定义表格视图单元未正确出列。相反,tableViewCell 类型是从回收的单元格继承而来的。

override func prepareForReuse() {
    super.prepareForReuse()

    if tableView != nil {
        tableView = nil
    }
}

我应该做些什么不同的事情?

【问题讨论】:

    标签: ios swift uikit


    【解决方案1】:

    正如@nhgrif 在他现已删除的帖子中所说,您的代码没有多大意义。 (你怎么删了?)

    我建议不要在每次回收集合视图单元格时删除表格视图并重新创建它。表视图是大而复杂的对象,创建和销毁它们非常昂贵。

    相反,保持表格视图不变并简单地发送一个 reloadData 消息。然后它应该用新的内容重新加载自己。

    如果您确实希望每次都创建和销毁表视图,请将用于存储表视图的实例变量设为弱可选变量。然后只需从它的超级视图中删除表视图。这将导致它被释放。

    如果您将表视图变量设置为弱可选,则需要在强局部变量中创建表视图,将其添加到超级视图,然后将其保存到弱实例变量中。如果你尝试直接在弱实例变量中创建你的able view,它会在你添加为子视图之前被释放。

    【讨论】:

    • 这是有道理的。重新加载 tableView 正是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 2020-08-31
    相关资源
    最近更新 更多