首页 > 解决方案 > 删除 UITableView 部分中的所有内容后结束编辑

问题描述

我的项目包含一个表格视图。此表视图由 2 个部分组成。第一部分包含一个不可编辑的单元格。第二部分由一个名为 data 的数组填充。

有一个按钮可以启动编辑模式并允许用户从第二部分删除内容。

当第二部分为空时,我正在尝试结束编辑模式,以便我可以选择第一部分中的单元格。(美学目的)

我的代码看起来像这样(简化的,不是实际的代码):

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: 方法调用它。

它有效,但我觉得这将是一个 hacky 解决方案。我不清楚为什么在删除所有内容后我不应该结束编辑。有人可以解释一下吗?或者也许还有其他选择?

标签: iosswiftuitableviewtableview

解决方案


推荐阅读