#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
  • 則將 SecondViewControllernumber 屬性值傳遞給 DetailViewControllernumber 屬性。

最後在要顯示的ViewController,把要顯示的寫出來即可~

回到內容~

我要把第一頁的內容傳到第一個ViewController及第二個ViewController
我可以使用上面的範例來做~
那因為要傳的內容蠻多的,我先做一個Struct來管理:

在要傳資料的頁面寫SegueAction:

children 陣列中的第一個、也就是MenuDetailTableViewCell賦值給變數 controller,那因為我有張圖片是顯示在這一個ViewController,所以如藍色框框處:

在MenuDetailTableViewCell顯示最後的內容:
這邊就跟原本的一樣方法了~

p(´⌒`。q)

--

--