iOS Swift tableView 编辑模式 左滑 删除数据

编辑模式

1. editButtonItem

  self.navigationItem.rightBarButtonItem = editButtonItem
//配合editButtonItem
    override func setEditing(_ editing: Bool, animated: Bool) {
        super.setEditing(editing, animated: animated)
        self.tableView.setEditing(editing, animated: true)
    }

2.左滑删除

直接实现下面的方法

实现的方法

  //设置哪些行可以编辑
  func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        if(indexPath.row == 0){
            return false
        }else{
            return true
        }
    }
    
    // 设置单元格的编辑的样式
    func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
        return UITableViewCell.EditingStyle.delete
    }
    
    //设置点击删除之后的操作
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            // Delete the row from the data source
            workManager.updateCollection(withYear: yearForSearch, month: monthForSearch, row: indexPath.row - 1)
            count = count - 1
            tableView.deleteRows(at: [indexPath], with: .fade)
            tableView.reloadRows(at: [IndexPath(row: 0, section: 0)], with: .fade)
        } else if editingStyle == .insert {
            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
        }
    }

其中count - 1是因为numberOfRowsInSection这里返回了count,必须要count - 1 否则会报错Invalid update,意思是删除前后 数量应该对应,count不减1的话数量不对。

其它方法

多个按钮

editActionsForRowAtIndexPath
能设置出现编辑的按钮 默认是删除 可以自定义UITableViewRowAction
可以设置多个操作,操作完tableView.editing = False 退出编辑模式

多选

allowsMultipleSelectionDuringEditing

你可能感兴趣的:(iOS Swift tableView 编辑模式 左滑 删除数据)