iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 9
0
Mobile Development

《菜鳥のSwift》持續30天開發挑戰系列 第 9

《DAY 9》在畫面之間傳遞參數(上)

今天要學習畫面之間如何利用 segue 傳遞參數,假設我們已經有兩個 View Controller,在第一個畫面的 Text Field 輸入字串,按下 Button 要能夠在第二個畫面的 Label 顯示。

先在兩個 View Controller 建立 segue,所需要的元件如圖所示,並為 Button 寫 IBAction 函數、其它元件取上 IBOutlet 屬性名稱。

  • 我的 Text Field 取名為 inputString,第二個 View Controller 的 Label 取名為 outputString,segue 的識別碼為 toSecondView。
    https://ithelp.ithome.com.tw/upload/images/20200922/201296805yEzgM8yv6.png

在 SecondViewController.swift 內宣告一個全域字串。

var str: String?

在 ViewController.swift 實作 prepare 函數。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toSecondView" {
        let vc = segue.destination as! SecondViewController
        vc.str = inputString.text
    }
}

在 SecondViewController.swift 的 viewDidLoad 中寫上 outputString.text = str。

override func viewDidLoad() {
    super.viewDidLoad()
    outputString.text = str
}
  • prepare 函數是當 segue 啟動時會呼叫的函數,利用 segue.destination 得到 SecondViewController 的實體,然後將 SecondViewController.swift 內的 str 設成 inputString.text,進入第二個畫面時再將 str 給 outputString.text。

  • 我們不能直接在 prepare 函數內寫 vc.outputString.text = inputString.text,原因是屬性名稱為 outputString 的元件還沒有產生,所以先傳給 str 再將 str 指定給 outputString.text。


上一篇
《DAY 8》切換手機畫面
下一篇
《DAY 10》在畫面之間傳遞參數(下)
系列文
《菜鳥のSwift》持續30天開發挑戰30

尚未有邦友留言

立即登入留言