我有一种UITableViewCell,可以让用户在运行时添加/删除任意数量的UITextView。
我在尝试重用/出队这种类型的单元时遇到了问题,因为有时当您上下滚动时,表格视图单元才开始重叠。当我使单元出队/返回时,我正在运行设置方法(该方法首先在内部启动拆解方法以删除所有先前的视图),并使用该模型来设置/恢复所有必要的视图和布局约束。
if let cell = tableView.dequeueReusableCell(withIdentifier: "MultipleContentCell", for: indexPath) as? MultipleChoiceTableViewCell {
cell.setupCellWithModel(model: model)
cell.setNeedsUpdateConstraints()
cell.updateConstraintsIfNeeded()
cell.delegate = self
return cell
}
我不能真正弄清楚为什么单元格有时在表视图中重叠,但是我猜想它与动态重新创建布局有关。我正在考虑不重用这些类型的单元格,而只是将它们存储在列表中。
我的问题是:可重复使用的单元格是否总是假定具有相同的常规UIView布局,并且仅内容发生变化?我不应该重复使用这些类型的单元格吗?还是以前有人经历过?
谢谢
最佳答案
每次您使单元出队并且从不删除时,都会创建UITextView。要修复该功能,请使用prepareForReuse()。您必须定义单元在MultipleChoiceTableViewCell中出队之前应该做什么。例如:
override func prepareForReuse() {
super.prepareForReuse()
for view in speciesName.subviews {
if view is UITableView {
view.removeFromSuperview()
}
}
}
我几天前添加了类似的问题:
Cells in UITableView overlapping. Many cells in one place
如果您有任何疑问,我明天可以尝试为您提供更多帮助。
干杯!
关于ios - 在运行时重用具有动态布局内容的单元格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43334294/