iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0

說完基本的,接下來要進階一點
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可以解決以上問題


上一篇
Day9 留言板3
下一篇
Day11 留言板5
系列文
swift 新手路程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言