插入新单元格时,iOS UITableView删除的单元格内容会重新出现

时间:2018-09-25 16:04:05

标签: ios swift uitableview swift4

我有一个表格视图,可以在其中插入和删除单元格。对于插入单元格,我使用以下代码:

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图像。在删除单元格并插入新单元格时,该单元格的内容将填充到新单元格中。有人可以帮我解决这个问题吗?

enter image description here

1 个答案:

答案 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 = ""
}