距離期末作業倒數2天,大概一週前草率決定了幾要Demo的內容,目前的進度大概也有了30%左右。
這次的主題因為很懶得動腦,於是選定了學習遊記第二篇提到過的冰箱儲存管理app-請參考-Swift / Xcode學習遊記(2)-用pop快速製作一個prototype。
上週三跟同班同桌的同學們一起出來做簡單的Sketch教學,自己也獲益良多,回到家後就用Sketch拉出了這個App的UI大概設計,而之後就卡住了好幾天…
11/28(一)拜兩位同學所賜,終於順利搞定存取功能了!謝謝Debbie女神跟暐潔小天使XD,當然還有神秘嘉賓,即使重感冒也不減對學生的關心的熱血教師 — Swift小王子-PeterPan的到場鼓勵!這次能夠來Peter這邊學習,認識這麼多有意思的同學,真的對我人生際遇上有莫大的幫助!
目前的進度是:存取功能已經有初步的作用了!
不過今天紀錄的部分是Table View Cell的重複使用。
步驟如下:主頁的Table View照著最初的設計設定好長寬,在裡面放入一個Table View Cell,做好客製化的設定後,等著之後用程式碼複製、重複利用這個Cell。
重複利用的好處與效能有關,如果每一個都固定拉好一個cell,雖然一目瞭然,但每次捲動畫面的時候,都會重複呼叫cell,會浪費記憶體空間及效能。
要重複利用cell之前,必須將這個“容器”給一個名稱:這個要寫在Table View Cell內,之後只要呼叫這個名稱,則可以使用裡面所設定好的元件,替換資料內容後顯示在使用者面前。
這邊要注意的是,如果容器有兩種以上不同樣式,要重複使用的時候請不要取一樣的名字,就像你把兩個不同的罐子都叫存錢筒,然後跟你妹說:把這個零錢放進存錢筒裡。你妹一定會傻掉,然後問你:哪個存錢筒啊?
醒醒吧,你沒有妹妹,把零錢放進我的存錢筒裡吧,乖。
設定好之後記得要指定Table View 的 DataSource給這個ViewController
為了要重複利用這個tableView,我們需要以下的程式碼
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {let cell = tableView.dequeueReusableCell(withIdentifier: “ItemInfo_ID”, for: indexPath)//“ItemInfo_ID”<<是幫自己的cell取的名字,意思指的是要重複的就是這個cell
之後將cell內的元件一一設定tag後拉入,用tag做區別,每個元件就不會有招喚失敗的問題啦!
在剛剛那個cell的程式碼內定義每個元件
var itemPhoto = cell.contentView.viewWithTag(24) as! UIImageView
var nameLabel = cell.contentView.viewWithTag(20) as! UILabel
var dateLabel = cell.contentView.viewWithTag(22) as! UILabel
var numLabel = cell.contentView.viewWithTag(21) as! UILabelreturn cell
這樣就簡單完成了重複利用cell的部分了!
附上Github連結到目前完成的部分。