說完基本的,接下來要進階一點
1.左滑刪除
使用tableView的trailingSwipeActionsConfigurationForRowAt函式,是左滑
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
// 建立一個 UIContextualAction 物件,用於刪除行。
let deleteAction = UIContextualAction(style: .destructive, title: "刪除") { (action,sourceView, complete) in
// 取得 Realm 物件。
let realm = try! Realm()
// 取得要刪除的 Todo 物件的uuid。
let dogs = realm.objects(iteamTable.self)
let todoToDelete = dogs[indexPath.row].uuid
// 在 Realm 中刪除 Todo 物件。
try! realm.write {
let todosInProgress = dogs.where {
$0.uuid == todoToDelete
}
realm.delete(todosInProgress)
}
// 從 tableView 中移除行。
self.iteamTabel.remove(at: indexPath.row)
self.tabelview.deleteRows(at: [indexPath], with: .top)
complete(true)
}
// 設定 UIContextualAction 物件的圖標有一個垃圾桶圖案。
deleteAction.image = UIImage(systemName: "trash")
// 建立一個 UISwipeActionsConfiguration 物件,並將 UIContextualAction 物件加入到其中。
let trailingSwipConfiguration=UISwipeActionsConfiguration(actions[deleteAction])
// 返回 UISwipeActionsConfiguration 物件。
return trailingSwipConfiguration
}
為何要將選擇刪除的uuid選出再刪除?
假如你選擇刪除第一個,你在row選1在realm裡的第一項和tableView Row的第一項不一定是同一筆資料
如果有兩筆資料名字和內容都相同那你要怎麼區別?
由於每一個uuid 都是不同的,使用uuid可以解決以上問題