我之前使用以下代码删除了UITableView
中的单元格:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
feedTable.deleteRows(at: [indexPath!], with: .fade)
}
}
但是,现在我想为单元格添加自定义操作,所以我已经添加了这个:
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let edit = UITableViewRowAction(style: .normal, title: "Edit", handler: { (action, indexPath) in
})
let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
}
edit.backgroundColor = UIColor.green
return [delete, edit]
}
现在我很困惑我是否需要原始的commit editingStyle
功能。我应该将所有编辑处理代码(feedTable.deleteRows(at: [indexPath!], with: .fade)
)移动到新功能吗?
在我看来,有许多不同的功能与UITableViewCell
编辑有关,而且我对在哪些时候使用它们感到困惑。
答案 0 :(得分:0)
我应该将所有编辑处理代码(feedTable.deleteRows(at:[indexPath!],带:.fade))移动到新函数吗?
您的问题的答案:是
实现tableView(_:editActionsForRowAtIndexPath :)方法时,表视图将不再为您生成“删除”按钮。这就是您需要创建自己的删除按钮的原因。
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let edit = UITableViewRowAction(style: .normal, title: "Edit", handler: { (action, indexPath) in
// your handling code
})
let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
// your handling code
}
// buttons colors
edit.backgroundColor = UIColor.green
delete.backgroundColor = UIColor.red
return [delete, edit]
}