UITableView的DataSource有以下三個方法:
1.
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool;
2.
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath);
3.
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]?
其中第一个方法声明哪些tablecell可以被编辑(向左滑动)。
第二、三个方法必须实现其中一个。
例子一:
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
// delete here
} else { }
}
实现以上方法后,向左滑动cell会出现delete按钮,点击后进入上面方法里
例子二:
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let action = UITableViewRowAction(style: .default, title: “action”) { (action, indexPath) in
tableView.setEditing(false, animated: true)
}
action.backgroundColor = .orange
return [action]
}
实现以上方法后,例子一里的方法自动失效。向左滑动cell后会根据返回的数组出现一个或多个自定义的UITableViewRowAction,action相应的回调在创建时声明好。另外,调用tableview的setEditing(editing: Bool, animated: Bool)函数同样会响应该DataSource方法调用自定义的rowAction。