Task#2[Todo-list實作]:UITableView、UserDefault、UIAlertController

影山小麥機
Jul 28, 2021

前言

最近在做Task2:Todo list的時候,大致做了一些技術需要的整理,這邊就簡要的說說我都做了些什麼:

  1. UITableView
  2. UserDefault
  3. 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。

幾個比較複雜的點大概是這樣,不過,其實也有參考一些文章的作法,以下會附上參考資料。

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

No responses yet

Write a response