UITableView的編輯(插入、刪除、移動)

來源:互聯網
上載者:User

標籤:

先說兩個方法beginUpdates和endUpdates,幾點注意事項:

  • 一般我們把行、塊的插入、刪除、移動寫在由這兩個方法組成的函數塊中。如果你不是在這兩個函數組成的塊中調用插入、刪除、移動方法,表的屬性(比如行數)可能失效。
  • 一般也不應該在由這兩個函數組成的函數塊中調用reloadData,如果你這麼做了,那麼所有的動畫都要自己進行。
  • 這兩個方法組成的塊,可以嵌套。
  • 同一個塊中的插入、刪除操作,先處理完刪除操作才會執行插入操作,而不管在它們在塊中的順序。

UITableView是否處於編輯模式取決於它的editing屬性。當處於編輯模式時,在每一個cell的左側會顯示一個插入或刪除的控制項,具體顯示什麼取決於cell是怎麼配置的。觸摸一個控制項的時候會讓tableView調用資料來源方法tableView:commitEditingStyle:forRowAtIndexPath:。可以調用setEditing:animated:讓tableView進入或者退出編輯模,表的資料來源可以有選擇的拒絕cell進入編輯模式,通過實現tableView:canEditRowAtIndexPath:。

當一個tableView處於編輯狀態時,它的代理通過 tableView:editingStyleForRowAtIndexPath:返回每個可編輯的cell所處的狀態(插入、刪除)。當一個tableView收到setEditing:animated:訊息時,它給每個每一個可見行的UITableViewCell對象發送相同的訊息,接著它給資料來源和代理髮送一連串訊息像下面圖中描述的那樣。

 

當使用者swipe across一行顯示delete按鈕,在上面圖中的調用順序有一個變化。當使用者swipe一行要刪除的時候,tableView首先檢查它的資料來源是否實現了tableView:commitEditingStyle:forRowAtIndexPath:方法,如果實現了,tableView給自己發送setEditing:animated:訊息,進入編輯模式。在這個“swipe to delete”模式,tableView不顯示編輯和重新排序控制項。因為這是一個使用者驅動事件,it also brackets the messages to the delegate inside of two other messages:tableView:willBeginEditingRowAtIndexPath: and tableView:didEndEditingRowAtIndexPath:.(怎麼翻譯合適^.^)。通過實現這些方法,代理可以合適的更新tableView的外觀。

【後邊有點複雜,我先研究研究】

UITableView的編輯(插入、刪除、移動)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.