模擬提款App之初次使用indexPathsForVisibleRows

Dreaming Big GIF — Dream Money Tom And Jerry — Discover & Share GIFs (tenor.com)

這次練習使用Nib客製TableViewCell,在這過程中遇到無法準確抓到Cell上的Button,還好有Peter指點應該使用indexPathsForVisibleRows,使這次的小練習有意外的收穫。

成果圖

Github連結

製作流程

首先附上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,使原本不能點擊的灰色按鈕回覆為藍色可點擊按鈕。

完成!

--

--