iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 10
0
Mobile Development

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

《DAY 10》在畫面之間傳遞參數(下)

Segue 是雙向而非單向,所以除了透過 segue 切換畫面,也可以透過原本 segue 回到上一個畫面並將資料傳遞回去,這個可以返回的 segue 叫做 unwind segue。

假設要按下第一個畫面的 Button 跳到第二個畫面,在第二個畫面的 Text Field 中輸入文字按下 Button 返回第一個畫面,並且能顯示在第一個畫面的 Label 上。
https://ithelp.ithome.com.tw/upload/images/20200922/20129680NSrvaH3GwU.png

  • 第一個畫面的 Label 取名為 outputString,第二個畫面的 Text Field 取名為 inputString。

在 ViewController.swift 寫一個函數,這個函數是自訂的。

@IBAction func unwind(for unwindSegue: UIStoryboardSegue) {
    if unwindSegue.identifier == "unwindToFirstView" {
        let vc = unwindSegue.source as! SecondViewController
        outputString.text = vc.inputString.text // 不需要先傳給某個變數,因為元件已經產生
    }
}

在第二個畫面的 Button 拉藍線到 Exit,鬆開滑鼠再點選「unwindFor:」,如果沒看到代表上一步函數的參數有誤。
https://ithelp.ithome.com.tw/upload/images/20200922/20129680I00QmvtFJr.png

在文件大綱點選 Unwind segue to "unwindFor:" 設定識別代號為 unwindToFirstView。
https://ithelp.ithome.com.tw/upload/images/20200922/20129680VQvZ3lIIjO.png

  • 第二個畫面的 Button 不需要寫 IBAction 函數,而是在返回的 ViewController.swift 內實作自訂函數。

上一篇
《DAY 9》在畫面之間傳遞參數(上)
下一篇
《DAY 11》不使用 segue 傳遞參數
系列文
《菜鳥のSwift》持續30天開發挑戰30

尚未有邦友留言

立即登入留言