? ? ? ?表視圖一旦進入刪除和插入狀態,單元格的左邊就會出現一個“編輯控件”,如圖1所示。這個區域會顯示刪除控件“-”或插入控件“+”,具體顯示哪個圖標在表視圖委托協議的tableView:editingStyleForRowAtIndexPath:方法中設定。
圖1、單元格編輯控件
圖2、單元格刪除控件
圖3、單元格刪除確認控件
? ? ? ?要注意的是。在iOS中還有一個鮮為人知的刪除手勢,那就是在單元格中從右往左滑動手勢,也會在單元格右邊出現一個Delete按鈕。
? ? ? ?插入數據時,新插入的單元格會出現在表視圖的后面,如圖4所示。當點擊插入控件時,會增加一行數據,此操作可重復進行。
圖4、單元格插入
? ? ? ?刪除和插入單元格操作的核心是如下兩個方法:表視圖委托對象的tableView:editingStyleForRowAtIndexPath:方法和表視圖數據源對象的tableView:commitEditingStyle:forRowAtIndexPath:方法。刪除和插入單元格的時序圖如圖5所示。
圖5、刪除和插入單元格的時序圖
? ? ? ?setEditing:animated:方法設定視圖能否進入編輯狀態,然后調用委托協議中的tableView:editingStyleForRowAtIndexPath:方法進行單元格編輯圖標的設置。當用戶刪除或修改控件時,委托方法向數據源發出tableView:commitEditingStyle:forRowAtIndexPath:消息實現刪除或插入的處理。