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

将Swift 3的UITableView单元格删除函数迁移至Swift 5

Swift 3 转 Swift 5:UITableView 单元格删除函数改写

嘿,这就帮你把这段Swift 3的代码转换成Swift 5版本,还顺便优化下交互体验~

基础语法适配版本

先给你最直接的语法转换版本,保证和原逻辑一致:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableView.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        foods.remove(at: indexPath.row)
        tableView.reloadData()
    }
}

更推荐的优化版本(带删除动画)

上面的版本只是完成了语法适配,但reloadData()会刷新整个表格,体验不够丝滑。Swift 5里我们可以用系统自带的删除动画,让交互更符合iOS规范:

override func tableView(_ tableView: UITableView, commit editingStyle: UITableView.EditingStyle, forRowAt indexPath: IndexPath) {
    guard editingStyle == .delete else { return }
    
    // 先修改数据源
    foods.remove(at: indexPath.row)
    // 仅对目标行执行删除动画,而非刷新整个表格
    tableView.deleteRows(at: [indexPath], with: .automatic)
}

关键变化说明

  • 枚举命名简化:Swift 3中的UITableViewCellEditingStyle在Swift 5里被重命名为UITableView.EditingStyle,而且因为函数参数已经指定了类型,我们直接写.delete就可以,不用写完整的枚举名。
  • 交互体验升级:替换reloadData()为deleteRows(at:with:),只会对指定行执行删除动画,比刷新整个表格更流畅,用户体验更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:25:07