[iOS]麻古茶坊MACU 訂飲料APP-Part3.自動切換廣告橫幅/UISegmentedControl in TableViewCell
本篇重點
- 自動切換廣告橫幅
- 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
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了!整個過程讓我費盡心思,明明是看起來這麼簡單的頁面啊…
然後我的進度真的非常緩慢🐌,但也只好一步一步前進了!希望之後的開發速度可以快一些👀
最後~該來一杯麻古犒賞自己一下啦!🧋