#25–4 期末< 4>好味小姐罐頭訂購APP-資料傳到下一頁
延續上一章,終於到資料傳送了( ⸝⸝´꒳`⸝⸝)( ⸝⸝´꒳`⸝⸝)
其實往後、往下一頁傳資料最常用的方式就是@IBSegueAction,但因爲我的頁面比較特別一點所以特別寫出來分想給大家~
並且至少也要拆2~3章來說明吧,因為真的很麻煩。。。
先附上完成的Gif, 圖:
Flow:
一般常見是利用@IBSegueAction把資料從原本的ViewController傳到另一個ViewController,
那我這次做的是把圖片傳到下一個ViewController,其他資料再傳到ContainerView裡的ViewController裡~
(OS: 沒辦法Static Cell只能用TableViewController,
但我圖片就是想放在最上面QQ)
如何在Container View裡增加一個ViewController:
在Container View embed in 一個View Controller即可。
傳資料的範例(感謝Peter幫助):
按下按鈕之後~
把數字傳到Second View Controller裡的Detail View Controller裡面顯示出來~
在View Controller 寫好 SegueAction:
在Second ViewController, Detail ViewController宣告 number:
比較特別的是要在SecondViewController新增以下:
if let controller = children.first as? DetailViewController {
controller.number = number
解說:
children是一個陣列,也是 UIViewController
的屬性,我們讓DetailViewController作為controller的第一個並將其轉型~
- 如果存在子視圖控制器並且其類型是
DetailViewController
, - 則將
SecondViewController
的number
屬性值傳遞給DetailViewController
的number
屬性。
最後在要顯示的ViewController,把要顯示的寫出來即可~
回到內容~
我要把第一頁的內容傳到第一個ViewController及第二個ViewController
我可以使用上面的範例來做~
那因為要傳的內容蠻多的,我先做一個Struct來管理:
在要傳資料的頁面寫SegueAction:
將 children
陣列中的第一個、也就是MenuDetailTableViewCell賦值給變數 controller
,那因為我有張圖片是顯示在這一個ViewController,所以如藍色框框處:
在MenuDetailTableViewCell顯示最後的內容:
這邊就跟原本的一樣方法了~
p(´⌒`。q)