我有一个表格视图,可以在其中插入和删除单元格。对于插入单元格,我使用以下代码:
tableView.beginUpdates()
tableView.insertRows(at: [IndexPath(row: cellCount-2, section: 0)], with: .automatic)
tableView.endUpdates()
对于删除单元格,我使用以下代码:
tableView.beginUpdates()
tableView.deleteRows(at: [indexPath], with: .automatic)
tableView.endUpdates()
附加我遇到的问题的gif图像。在删除单元格并插入新单元格时,该单元格的内容将填充到新单元格中。有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
如果您使用的是标准UITableViewCell
,请记住要重置UITableViewDelegate函数cellForRowAtIndexPath
中的内容,因为dequeueReusableCell
将回收已经初始化的单元格(必须将其恢复为原始状态状态)
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "aCellIdentifier", for: indexPath)!
...
cell.title.text = ""
cell.description.text = ""
}
但是,典型的方法是子类UITableViewCell
并实现prepareForReuse
方法(该方法在单元被重用之前会自动调用),最终您将所有标签,图像,子视图重置为初始状态
override func prepareForReuse() {
super.prepareForReuse()
self.labelScore.text = ""
self.labelDate.text = ""
}