Check List

功能:

  1. 新增、編輯、刪除
  2. 勾選
  3. 換背景

參考這本書的Check list練習:

主要練習到三個部分:

Protocols and Delegates

protocol像一個協議,定好規則,就得照著做,我們宣告了一個protocol用來當作screen A與screen B之間的協議。

並且告訴我們screen A要遵從這個協議。

screen A

在screen B,我們要宣告一個variable指向這個protocol。

screen B

我們用到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 A

而screen B就會傳回他自己的資料給screen A的delegate method,delegate跟protocol是攜手共進的好夥伴。

screen B
screen B

現在就可以在screen B讓他們工作啦,這邊在編輯以及新增頁面按下done button之後,用各自的method傳資料做事。

screen A

Edit Item

這裡的編輯是用detail disclosure,顯示detail那個按鈕進去的,原本在prepare的地方,我使用了tableView.indexPathForSelectedRow要拿到我們選取的cell是哪一個,但是現在這裡因為有了要打勾的功能,原先設計是按下那個cell便會切換打勾的狀態。

screen A

經過了一陣錯誤連連,我才知道我們點下去那個detail button,並不等於按了那個cell啊,而只是按了那個button進入下一頁,不過我們一樣可以取得那個detail button是位於哪一個cell。

var selectedRow: Int?

宣告一個用來儲存選取到的row的變數。

screen A

在我們的delegate method就可以用來取的cell啦。

Saving and Loading

一樣也是使用FileManager來儲存跟讀資料,以前是寫在生成那個物件時,他就有自己的static function。

書裡的寫法是這樣

screen A

先取得path,再來寫encode跟decode的程式。

screen A

基本上都差不多,只是這樣這兩個function只能在這個class使用。

版本ID: 7d76f57

--

--