编辑模式
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