Check List
功能:
- 新增、編輯、刪除
- 勾選
- 換背景
參考這本書的Check list練習:
主要練習到三個部分:
Protocols and Delegates
protocol像一個協議,定好規則,就得照著做,我們宣告了一個protocol用來當作screen A與screen B之間的協議。
並且告訴我們screen A要遵從這個協議。
在screen B,我們要宣告一個variable指向這個protocol。
我們用到delegate的時候可能是在screen A會打開screen B,而screen B 也有可能會回傳資料給screen A。
然而screen B就是一個只管好自己工作管轄的人,他不想知道screen A在搞什麼,他只知道某個物件是他的代理人,也不care到底是哪個物件。
所以screen A會負責create跟present screen B,並且在prepare的地方表明screen B的代理人就是本人。
這邊宣告delegate時前面加上的weak可以去影響ARC運作,參考以前作業紀錄ARC的部分:
而screen B就會傳回他自己的資料給screen A的delegate method,delegate跟protocol是攜手共進的好夥伴。
現在就可以在screen B讓他們工作啦,這邊在編輯以及新增頁面按下done button之後,用各自的method傳資料做事。
Edit Item
這裡的編輯是用detail disclosure,顯示detail那個按鈕進去的,原本在prepare的地方,我使用了tableView.indexPathForSelectedRow要拿到我們選取的cell是哪一個,但是現在這裡因為有了要打勾的功能,原先設計是按下那個cell便會切換打勾的狀態。
經過了一陣錯誤連連,我才知道我們點下去那個detail button,並不等於按了那個cell啊,而只是按了那個button進入下一頁,不過我們一樣可以取得那個detail button是位於哪一個cell。
var selectedRow: Int?
宣告一個用來儲存選取到的row的變數。
在我們的delegate method就可以用來取的cell啦。
Saving and Loading
一樣也是使用FileManager來儲存跟讀資料,以前是寫在生成那個物件時,他就有自己的static function。
書裡的寫法是這樣
先取得path,再來寫encode跟decode的程式。
基本上都差不多,只是這樣這兩個function只能在這個class使用。
版本ID: 7d76f57