傳送資料到其他頁面

使用 IOS 13才支援的 IBSegueAction達成

以前原本是使用 prepare達到兩個頁面傳遞資料,現在可以使用IBSegueAction來達到,我將一些步驟整理在下方:

左邊叫 ViewController,右邊叫 CaculateTDEEViewController

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連結,就大功告成了

線是從segue連結到ViewController,才能選到cacTDEEwithCoder:這個IBSegueAction的function

最後是結果

Github

--

--