傳送資料到其他頁面
使用 IOS 13才支援的 IBSegueAction達成
以前原本是使用 prepare達到兩個頁面傳遞資料,現在可以使用IBSegueAction來達到,我將一些步驟整理在下方:
CaculateTDEEViewController透過 init來接收資料
init裡面可以設定想傳遞的資料,若有多個資料可以使用 struct將其打包成一個自己定義的型態,那個形態我稱為 BodyDetail,擁有 BodyDetail型態的資料稱為 detail,裡面的東西在下方
controller的初始化會經過 init(coder:),因此要加上super.init(coder: coder)
我們在initializer前面加上required可以要求子類別一定要定義initializer
在ViewController定義IBSegueAction
設定好接收資料後,接著就要從發送的controller頁面設定傳送資料方法,將IBSegueAction設定好後,回傳(->)的型別是資料要到的頁面(CaculateTDEEViewController),因此在function裡面也要回傳CaculateTDEEViewController,如果在剛才的init有定義好那麼在宣告CaculateTDEEViewController時就會自動跳出來(coder:coder, detail:BodyDetail)的選項
Segue與Controller連結起來,選擇剛才所宣告的IBSegueAction
最後將剛才宣告的IBSegueAction與controller連結,就大功告成了
最後是結果
Github