基於Swift的iOS應用程序開發:使用表格顯示並控制數據(二):刪除表格中的數據

關於如何使用表格來顯示多行數據,請參考以下文章:

基於Swift的iOS應用程序開發:使用表格顯示並控制數據(一):顯示數據


本編記錄如何刪除表格中的數據,先來看效果:



如果我們需要刪除表格中的某一行數據,可以這麼做:

1、允許表格可編輯

找到被xcode自動代碼生成器所註釋的以下方法,或者別去管註釋,自己來寫:
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}
這個方法很簡單地返回一個布爾值,如果是true的話,就代表允許用戶編輯表格

2、設置每一行處於編輯狀態下的左側按鈕的樣式

找到被xcode自動代碼生成器所註釋的以下方法,或者自己編寫:
override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return UITableViewCellEditingStyle.delete
}
注意,UITableViewCellEditingStyle類提供了幾種默認的按鈕樣式,查看一下這個枚舉類型的源碼:
public enum UITableViewCellEditingStyle : Int {
   
    case none

    case delete

    case insert
}
可以看到一共有三種不同的樣式
none:不顯示任何按鈕圖形
delete:顯示一個紅色的刪除按鈕圖形
insert:顯示一個綠色的添加按鈕圖形

3、設置每一行側滑之後出現在右側的按鈕文字

對於表格行的刪除操作,爲了避免誤刪,我們還必須處理一個“確認”的操作。當用戶點擊了每一行左側的紅色刪除按鈕後,該行會發生一個側滑動作,並露出最右側的確定按鈕來。這個按鈕的文字是可以自定義的,只要實現以下方法即可:
override func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
    return "刪除"
}

4、確認刪除操作

實現以下方法,就能處理刪除動作了:
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        /*
         *  先刪除數組中對應的數據
         */
        self.stringArr.remove(at: indexPath.row)
            
        /*
         *  刪除一行表格
         */
        tableView.deleteRows(at: [indexPath], with: .fade)
    }    
}
注意上述方法中的“self.stringArr.remove(at:indexPath.row)”這句,因爲在本例中,顯示在表格上的數據是來自一個數組的。所以在刪除表格的一行之前,一定要先刪除數組中的相應的數組才行,否則後臺會報錯

5、在界面上添加一個“開始編輯”的按鈕

UITableViewController類本身帶有一個按鈕屬性:self.editButtonItem,這個按鈕一旦被按下,就會觸發編輯表格的動作。所以我們需要在自己的界面上,把這個按鈕放置在某個位置上。由於我在本例中使用了UINavigationController,所以我就把這個按鈕放在頂部導航欄的右側了:
override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationItem.rightBarButtonItem = self.editButtonItem
    self.navigationItem.rightBarButtonItem?.title = "開始編輯"
}



以上就是所有的刪除操作的代碼了,其實很簡單,全部都是繼承並實現UITableViewController已有的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章