#50 cell 的重覆利用 — to-do list 的完成打勾
目的: 熟悉 table view cell 的重覆利用原理。
iOS App 的 table 擁有不錯的效能,因為 table 捲動時不用重新產生新的 cell,可以重覆利用之前產生過的 cell。
但它也帶來一些副作用,如果我們不注意,將讓 cell 顯示之前的內容,比方讓下圖的 to do app & music app 顯示錯誤的圖示,讓不該打勾的 cell 打勾,或是錯誤的歌曲 cell 上顯示播放中的動畫。
為了修正此問題,我們必須在 function tableView(_:cellForRowAt:) 裡將資料的正確內容設定到 cell 上,因此 array 的成員裡必須有個欄位儲存 todo 項目是否已完成,如此才能設定 cell 是否顯示打勾。
基本版:
1 在表格顯示待辦事項,想讀的書,想去玩的國家等,顯示的資料可先寫死在 array 裡。
2 利用點選 cell 顯示 / 取消打勾,當 cell 顯示打勾時表示已完成。請特別 注意表格上下捲動後,原本打勾的 cell 是否變沒打勾,原本沒打勾的 cell 是否變打勾。
(1) 如何設定 cell 打勾。
將 UITableViewCell 的 accessoryType 設為 .checkmark。
(2) 如何取消 cell 打勾。
將 UITableViewCell 的 accessoryType 設為 .none。
進階版:
1 加入新增,修改,刪除功能。
2 加入儲存功能,App 重新啟動後,可以看到之前的記錄和已完成的項目。