You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UITableView侧滑cell显示删除按钮后点击编辑出现状态不一致问题

问题根因
  1. 当侧滑UITableViewCell显示删除按钮时,UITableView会临时进入单行编辑模式,此时tableView.isEditing取值为true,但ViewController自身的isEditing属性仍为false,两者状态不同步。
  2. 你当前的setEditing方法实现逻辑错误:系统调用该方法时传入的editing参数就是需要切换到的目标状态,无需手动对当前状态取反,这直接导致了状态翻转错乱。
修复方案

步骤1:修正setEditing方法实现

直接使用系统传入的目标状态参数,保证ViewController和UITableView的编辑状态完全同步:

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    // 先复位可能存在的单行侧滑状态
    if let swipeEditIndexPath = tableView.indexPathForSelectedRow {
        tableView.deselectRow(at: swipeEditIndexPath, animated: animated)
    }
    tableView.setEditing(editing, animated: animated)
}

步骤2:可选增强(侧滑取消后同步状态)

如果需要在用户侧滑显示删除按钮、又手动滑回取消后,保证状态完全一致,可以实现UITableViewDelegate的编辑结束回调:

func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) {
    // 单行侧滑编辑结束后同步VC状态为非编辑
    super.setEditing(false, animated: true)
}
修复后逻辑验证

侧滑Cell显示删除按钮后点击编辑按钮,系统会传入editing = true的目标状态,直接将UITableView设置为全局编辑模式,不会再出现状态翻转的问题。

内容的提问来源于stack exchange,提问作者Nuri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:06:04