我的项目包含一个表格视图。该表视图包括2个部分。第一部分包含一个不可编辑的单元格。第二部分由称为数据的数组填充。
有一个按钮可以启动编辑模式,并允许用户从第二部分中删除内容。
我正在尝试在第二部分为空时结束编辑模式,以便我可以在第一部分中选择单元格。(出于审美目的)
我的代码如下(简化的,不是实际的代码):
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
data.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
if(data.count==0) {
self.tableView.setEditing(false, animated: true)
self.tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: .top)
}
这会导致各种奇怪的错误。根据文档,预期:
您不应在此方法的实现内调用setEditing:animated:。如果由于某些原因必须在延迟后通过使用performSelector:withObject:afterDelay:方法来调用它。
它可以工作,但是我觉得这将是一个棘手的解决方案。对我来说不清楚,为什么删除所有内容后我不应该结束编辑。有人可以解释吗?也许还有其他选择?