前言
最近在做Task2:Todo list的時候,大致做了一些技術需要的整理,這邊就簡要的說說我都做了些什麼:
- UITableView
- UserDefault
- UIAlertController
正文
我在這次的Task裡面,為了避免MassiveViewController的問題,所以將ViewController分為兩個Class:ViewController、MyView
MyView中的屬性

MyView中TableView

MyView中的extension
這邊擴展了兩個protocol

主要就是回應在table()中關於theTableView.delegate = self、theTableView.dataSource的兩個描述,因為這邊啟用了theTableView的協定。
這兩個協定的主要內容就是會回應兩件事情:這個表格裡有多少setion、有多少row在裡面,row裡面的cell文字標籤有什麼文字,回傳cell。
接下來會說的是ViewController裡面的內容,由於把畫面的東西分出去了,所以我們還是需要把跟畫面有關係的MyView引進來ViewController中。
ViewController中的屬性

這邊會做一件事,就是先把let myView:MyView = .init( )先做出來,這件事為什麼重要,因為就是代表了實體化了MyView這個class,讓它:myView在往下的情形中都可以被調用。
ViewController:LifeCycle中的loadView、viewDidload

這兩件事情算是挺重要的,loadView就是預先載入畫面,在這裡面,view = myView的用意就是讓畫面可以直接等於被實體化的myView,所以在往下的內容中,viewDidload可以直接調用myView.table( )來獲取表格的更新。
ViewController下的userDefault:資料短儲存

在saveData中,就是實際的的把info值存進去,然後再藉由myView.info讀取。
ViewController下的UIAlertController

這邊主要是做創建提示框,還有提示框輸入字樣的配置。先讓提示框中輸入的框判斷有沒有內容,然後再決定Title是要用未編輯還是已編輯。
然後創建提示框的部分,就如89–93,不過這部分其實可能也可以放在MyView裡面,算是這次切得不乾淨的地方吧。

然後設計UIAlert的兩個鍵:ok、cancel。
ok鍵的部分主要先從提示框的內容開始判斷:如果item是空,那麼就會在info陣列中先增加輸入的內容,然後接著101行的部分會在tableView裡面插入cell的內容,最後由saveData()儲存資料,
假如是有內容在提示框item不等於nil,則直接讓info的內容等於輸入的內容。
然後用reloadView更新tableView。
幾個比較複雜的點大概是這樣,不過,其實也有參考一些文章的作法,以下會附上參考資料。