iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Mobile Development

少年K的Swift奇幻漂流記系列 第 17

Day17 Swift MessageBoard App 實作 Part5:左滑內的刪除邏輯

  • 分享至 

  • xImage
  •  

deleteMessage

當刪除動作被觸發時,會呼叫 deleteMessage(_:at:) 函數,這個函數會彈出一個警告視窗讓使用者確認是否要刪除訊息。若使用者確定刪除,則會將該訊息從 Realm 資料庫中刪除,並更新表格。

// deleteMessage 是用來處理刪除訊息的動作
func deleteMessage(_ message: MessageBoard, at indexPath: IndexPath) {

    // 彈出一個警告視窗,詢問使用者是否確認刪除
    let alertController = UIAlertController(title: "刪除", message: "確定刪除嗎",                                                   preferredStyle: .alert)

    // 定義一個確定刪除的動作
    let deleteAction = UIAlertAction(title: "確定", style: .default) { 
        [weak self] _ in
        
        // 初始化 Realm 資料庫
        let realm = try! Realm()

        // 在 Realm 中寫入變更,刪除該訊息
        try! realm.write {
            realm.delete(message)
        }

        // 從資料源中移除該訊息,並更新表格
        self?.messageArray.remove(at: indexPath.row)
        self?.tbvTest.deleteRows(at: [indexPath], with: .fade)
    }

    // 定義一個取消動作,取消操作不做任何變更
    let cancelAction = UIAlertAction(title: "取消", style: .cancel, 
                                     handler: nil)

    // 將確定和取消的動作加入到警告視窗中
    alertController.addAction(deleteAction)
    alertController.addAction(cancelAction)

    // 顯示警告視窗
    present(alertController, animated: true, completion: nil)
}

透過 UIAlertController 我們提供了簡單的確認對話框,並利用 Realm 進行資料的刪除。刪除成功後,我們也要同步從資料源 (messageArray) 中移除該訊息,並透過 tableView.deleteRows 方法將表格中的對應列動畫性地移除。

結論

今天教完左滑刪除的功能!下一篇和下下篇會教右滑編輯


上一篇
Day16 Swift MessageBoard App 實作 Part 4:TableView 左滑
下一篇
Day18 Swift MessageBoard App 實作 Part 4:TableView 右滑
系列文
少年K的Swift奇幻漂流記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言