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

区分UITableViewCell的全局编辑模式与单行删除模式

解决方案:区分全局编辑与单行滑动删除状态

不需要给单元格持有UITableViewController的弱引用,直接利用单元格自带的tableView属性就能判断当前是全局编辑还是单行滑动删除场景。

核心思路

全局编辑模式下,整个UITableView的isEditing属性会被设为true;而单行滑动删除时,只有当前单元格进入编辑状态,UITableView本身的isEditing仍为false。基于这个差异,在单元格的setEditing方法里做判断即可。

修改后的单元格代码示例

override func setEditing(_ editing: Bool, animated: Bool) {
    super.setEditing(editing, animated: animated)
    
    // 判断是否处于全局编辑模式
    let isGlobalEditing = tableView?.isEditing == true && editing
    // 仅在全局编辑时隐藏指定内容
    yourHiddenView.isHidden = isGlobalEditing
}

逻辑说明

  • 点击全局编辑按钮时,控制器会调用setEditing(true, animated: true),此时tableView.isEditing变为true,所有单元格的setEditing被触发,isGlobalEditing为true,执行内容隐藏逻辑。
  • 用户滑动单行触发删除时,tableView.isEditing保持false,仅当前单元格的editing变为true,isGlobalEditing为false,不会隐藏任何内容。

额外补充

如果你的单元格在全局编辑模式下还有其他操作(比如显示排序控件),也可以基于isGlobalEditing的结果来控制,逻辑保持一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:41:02