[iOS]麻古茶坊MACU 訂飲料APP-Part3.自動切換廣告橫幅/UISegmentedControl in TableViewCell

本篇重點

  1. 自動切換廣告橫幅
  2. UISegmentedControl in TableViewCell

1.自動切換廣告橫幅

Banner Image Array

上方的廣告橫幅其實是用collectionView製作,每個item代表一張廣告,所以先設定廣告圖片的array,用append搭配迴圈就可以快速做出image array了!

設定Delegate、DataSource

使用extension的方式,讓MainViewController遵從UICollectionViewDelegate、UICollectionViewDataSource,item數量就是看有幾張廣告,將廣告array生成的UIImage派給cell的imageView,還有一定要記得設定cell ID

記得設定cell id

UICollectionViewDelegateFlowLayout

設定cell的尺寸跟collectionView一樣大,並且將cell的最小行距設成0,每個廣告之間才不會有空白。

開始切換廣告

設定切換速度是2.5秒,並且無限repeat。
呼叫collectionView的scrollToItem,可以讓他捲動到我們所需的cell,centeredHorizontally則是水平滑動。
最後將startTimer()放在viewDidLoad就可以一進入畫面就啟動廣告切換了!

2. UISegmentedControl in TableViewCell

由於我希望使用者點飲料的時候,可以懶懶的就點好一杯,所以選擇用UISegmentedControl,方便使用者還沒點選之前就有預設值,只是要如何在Dynamic Cell的情況下設定呢…上網找了好久終於找到了😀,原來是要出動Protocol

設定Protocol

在TableViewCell中寫入自訂Protocol,並先寫好function的名稱,內容在這邊還不會寫到,只是先定義名稱。

protocol SugarTableViewCellDelegate: AnyObject {    func toggleSugarSegmentedCtrl(with index: Int)}

設定變數delegate並遵從protocol

設定變數delegate,並且要讓它遵從稍早設定的protocol協議。
讓變數index等於segmentedControl選定的index。
接著拉出IBAction讓delegate可以呼叫切換segmentedControl的function

設定function的內容

接著就可以來到訂單畫面,讓OrderViewController遵從Protocol,並且開始設定function內容

但是…寫好以上這些,發現還是不能動…原來是少了最重要的一步!

cell的 delegate

一定要記得在cellForRowAt寫入以下程式,不然前功盡棄啊!
這邊的self代表的是OrderViewController 或是 EditViewController

cell.delegate = self

終於完成訂飲料App了!整個過程讓我費盡心思,明明是看起來這麼簡單的頁面啊…
然後我的進度真的非常緩慢🐌,但也只好一步一步前進了!希望之後的開發速度可以快一些👀

最後~該來一杯麻古犒賞自己一下啦!🧋

--

--