Swift 5 Xcode13.4.1中TableView的trailingSwipeActions无法调用问题
解决UITableView右滑(trailingSwipe)操作不触发的问题
你遇到的情况是UITableView的trailingSwipeActionsConfigurationForRowAt方法完全不被调用,但左滑(leadingSwipe)正常,且已确认delegate和datasource配置正确。以下是几个排查方向和解决办法:
- 检查是否存在旧版删除方法冲突:如果你的代码里同时实现了
tableView(_:commit:forRowAt:)这个旧的删除回调,系统会优先使用旧方法,导致新的右滑配置方法不触发。直接注释掉这个旧方法再测试即可。 - 确认未禁用右滑相关属性:虽然
allowsSwipeToDelete是针对旧版删除的属性,但部分场景下设置为false可能间接影响新的右滑操作。可以手动设置tableView.allowsSwipeToDelete = true试试。 - 检查TableView是否处于编辑模式:当
tableView.isEditing = true时,系统的swipe操作可能被屏蔽,确保当前TableView处于非编辑状态。 - 排查手势冲突:如果TableView或其Cell上添加了自定义的滑动手势,可能会拦截系统的右滑手势。暂时移除所有自定义手势,测试右滑是否恢复正常。
你的右滑配置代码本身没有问题:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let delete = UIContextualAction(style: .normal, title: "delete2") {(action, view, completionHandler) in print("delete2 \(indexPath.row)") } let swipe = UISwipeActionsConfiguration(actions: [delete]) return swipe }
内容的提问来源于stack exchange,提问作者Jose Tovar
相关产品推荐
相关产品推荐

