在删除表格视图中的单元格时遇到问题。似乎每删除一个单元格,屏幕上显示的下一个单元格就不会显示。我已经调试了cellForRowAt
,并且该单元正在出队并准备了数据集,但是从不呈现表视图单元。这是我的相关代码:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "taskCell", for: indexPath) as! TaskTableViewCell
if let task = self.task(indexPath: indexPath) {
cell.update(task: task)
}
cell.checkChanged = ...
return cell
}
override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
guard let task = self.task(indexPath: indexPath) else {
return nil
}
var actions = [UIContextualAction]()
let delete = UIContextualAction(style: .destructive, title: LocStr("delete")) { [unowned self] (action, view, success) in
self.delete(indexPath: indexPath)
success(true)
}
actions.append(delete)
...
let configuration = UISwipeActionsConfiguration(actions: actions)
return configuration
}
func delete(indexPath: IndexPath) {
DispatchQueue.main.async { [unowned self] in
if let task = self.task(indexPath: indexPath) {
self.allTasks.removeAll(where: { $0.id == task.id })
self.sort()
...
self.tableView.beginUpdates()
self.tableView.deleteRows(at: [indexPath], with: .fade)
self.tableView.endUpdates()
}
}
}
如您所见,当我在表格视图中滚动时,即使为该单元格调用了cellForRowAt
,下一个单元格也为空。我调试了UI,并能够确认空白处没有单元格。
还有其他人遇到过这个问题吗?我在这里做错什么了吗?
答案 0 :(得分:2)
我找不到关于此的官方文档,但是我相信您在使用tableView.deleteRows
样式时不应致电.destructive
。