Swift / Xcode學習遊記(14)-期末作業Table View Cell的重複利用

Zoey Tsou
5 min readNov 29, 2016

--

距離期末作業倒數2天,大概一週前草率決定了幾要Demo的內容,目前的進度大概也有了30%左右。

這次的主題因為很懶得動腦,於是選定了學習遊記第二篇提到過的冰箱儲存管理app-請參考-Swift / Xcode學習遊記(2)-用pop快速製作一個prototype

上週三跟同班同桌的同學們一起出來做簡單的Sketch教學,自己也獲益良多,回到家後就用Sketch拉出了這個App的UI大概設計,而之後就卡住了好幾天…

我知道一切都還很陽春,還有很大的修改空間,但現在只求能正常運作!功能才是真正要放重心的!

11/28(一)拜兩位同學所賜,終於順利搞定存取功能了!謝謝Debbie女神暐潔小天使XD,當然還有神秘嘉賓,即使重感冒也不減對學生的關心的熱血教師 — Swift小王子-PeterPan的到場鼓勵!這次能夠來Peter這邊學習,認識這麼多有意思的同學,真的對我人生際遇上有莫大的幫助!

我絕對不會說後面那段是被強迫寫上去的XDDDD

目前的進度是:存取功能已經有初步的作用了!

已經可以將食物放進冰箱內了!可喜可賀!

不過今天紀錄的部分是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! UILabel
return cell

這樣就簡單完成了重複利用cell的部分了!

附上Github連結到目前完成的部分。

https://github.com/ZoeyTsou/DemoRefrigerat

--

--