一般我們在做傳值動作的時候,會有好幾種方式可以做,像是用 Segue、Closure、Delegate、Global Variable、Notification 等方式,每種都有不同的應用場景,所以就依情況來使用~
在上一篇已經有介紹了 GlobalVariable 傳值的方法了
首先要在 Storyboard 上將 Button 透過拉 Segue 到 SecondVC,來建立跳頁的功能
設定跳頁方式為「Show」,iOS 13 開始,預設跳頁都是卡片式跳頁,所以如果想要改回以前的跳頁方式,可以點目的畫面的 ViewController,修改「TransitionStyle」、「Presentation」 (紅框處)
接著點一下 Segue,來設定這條 Segue 的 Identifier (紅框處)
然後新增一個 SecondVC.swift,讓第二個畫面的 class 改為我們新增的這個檔案 (紅框處)
先打開 SecondVC.swift,宣告一個變數 text,跟在 viewDidLoad 加入下面的程式碼
var text: String?
override func viewDidLoad() {
super.viewDidLoad()
textView.text = text
}
再打開 ViewController.swift,加入下面的程式碼
這裡我們做一個判斷,如果 segue.identifier 等於我們剛剛設定的 Segue Identifier,就執行下方的傳值動作
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "goToSecondVC") {
let controller = segue.destination as! SecondVC
controller.text = textField.text
}
/* 上面那段也可以改寫成下面這樣
guard segue.identifier == "goToSecondVC" else { return }
let controller = segue.destination as! SecondVC
controller.text = textField.text
*/
}
本篇的範例程式碼:GitHub