模擬提款App之初次使用indexPathsForVisibleRows
Published in
Oct 2, 2022
這次練習使用Nib客製TableViewCell,在這過程中遇到無法準確抓到Cell上的Button,還好有Peter指點應該使用indexPathsForVisibleRows,使這次的小練習有意外的收穫。
成果圖
製作流程
首先附上Storyboard的配置,只使用專案預設的並加上一個TableView。
設定目前存款與提款金額的選項與註冊Nib。
設定TableView Section數量以及各個Section內有幾個row。
cellForRowAt的設定。
Nib Cell
總金額Cell
總金額Cell內唯一比較特別的是Label使用客製UILabel呈現數字變化的效果,有興趣可以參考上一篇文章。
提款Cell
宣告一個protocol,再由ViewController實作該function。
在實作didWithdraw部分,首先判斷如果存款金額必須大於999才可以進行提款,否則會造成沒有錢錢還可以繼續領的情況發生。
下一個部分是透過indexPathsForVisibleRows讀取所有的indexPath,藉由for迴圈將indexPath傳給cellForRow,並把cell轉型為WithDrawCell。接著可以透過轉型後的Cell判斷按鈕當前狀態。當總金額已經小於該Cell顯示的選項金額時,將會使該按鈕轉變為灰色並且不可點擊。
恢復存款cell
一樣宣告一個protocol。將存款還原到預設值,接著執行tableView.reloadData,使原本不能點擊的灰色按鈕回覆為藍色可點擊按鈕。
完成!