我收到了一些意想不到的细胞回收行为。我有一个带有自定义单元格的UICollectionView,每个单元格都包含一个UITableView,它可以显示两种类型的自定义单元格之一(imageCell或movieCell)。
当回收collectionView单元格时,自定义表格视图单元格未正确出列。相反,tableViewCell类型继承自回收的单元格。
override func prepareForReuse() {
super.prepareForReuse()
if tableView != nil {
tableView = nil
}
}
我应该做些什么?
答案 0 :(得分:3)
正如@nhgrif在他现在删除的帖子中所说,你的代码没有多大意义。 (你怎么删掉它?)
我建议不要每次回收集合视图单元时删除表视图并重新创建它。表视图是大型复杂对象,创建和销毁它们非常昂贵。
相反,保持表视图完整,只需向其发送reloadData消息。然后它应该用新内容重新加载。
如果执行每次都要创建和销毁表视图,请使用用于存储表视图的实例变量作为弱可选变量。然后只需从它的超级视图中删除表格视图。这将导致它被释放。
如果使表视图变量为弱可选项,则需要在强局部变量中创建表视图,将其添加到超级视图,然后将其保存到弱实例变量中。如果您尝试直接在弱实例变量中创建可见视图,则在将其添加为子视图之前,它将被取消分配。