UITableViewRowAction在iOS13.0已废弃,升级项目代码求适配方案
解决UITableViewRowAction在iOS13+废弃的适配问题
嗨,刚好碰到过这个适配问题!iOS 13开始UITableViewRowAction就被标记为废弃了,苹果推荐用**UITableView.ContextualAction**配合UITableView.SwipeActionsConfiguration来实现侧滑操作,比原来的API还更灵活些。下面是你代码修改后的完整版本:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { // 创建删除操作的ContextualAction let deleteAction = UIContextualAction(style: .destructive, title: deleteActionTitle) { [unowned self] (action, view, completionHandler) in // 这里放你原来要执行的代码,比如删除数据、刷新表格 // 示例: // self.dataSource.remove(at: indexPath.row) // tableView.deleteRows(at: [indexPath], with: .automatic) // 操作完成后一定要调用completionHandler告诉系统结束操作 completionHandler(true) } // 把操作打包成配置返回 let swipeConfig = UISwipeActionsConfiguration(actions: [deleteAction]) // 如果不想让用户全滑一下就触发删除,可以把这个属性设为false swipeConfig.performsFirstActionWithFullSwipe = true return swipeConfig }
几个关键的改动点:
- 替换了原来的
editActionsForRowAt方法,改用trailingSwipeActionsConfigurationForRowAt(如果是左侧滑操作,就用leadingSwipeActionsConfigurationForRowAt) - 用
UIContextualAction替代UITableViewRowAction,闭包参数多了个completionHandler,必须调用它来收尾操作 - 通过
UISwipeActionsConfiguration可以配置更多侧滑行为,比如是否允许全滑触发第一个操作
要是需要兼容iOS13以下版本
如果你的项目还得支持iOS13之前的系统,可以同时保留新旧两个方法,加上版本判断就行:
// iOS13及以上用新方法 @available(iOS 13.0, *) func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let deleteAction = UIContextualAction(style: .destructive, title: deleteActionTitle) { [unowned self] (_, _, completionHandler) in // 执行你的操作 completionHandler(true) } return UISwipeActionsConfiguration(actions: [deleteAction]) } // iOS13以下用旧方法 func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? { let deleteRowAction = UITableViewRowAction(style: .destructive, title: deleteActionTitle) { [unowned self] (_, indexPath) in // 执行你的操作 } return [deleteRowAction] }
这样就能完美覆盖各个版本的iOS系统啦~
内容的提问来源于stack exchange,提问作者user1828845
相关产品推荐
相关产品推荐

