iT邦幫忙

2021 iThome 鐵人賽

DAY 4
0
Mobile Development

在 iOS 開發路上的大小事系列 第 4

【在 iOS 開發路上的大小事-Day04】透過 Segue 來傳值

前情提要

一般我們在做傳值動作的時候,會有好幾種方式可以做,像是用 Segue、Closure、Delegate、Global Variable、Notification 等方式,每種都有不同的應用場景,所以就依情況來使用~

在上一篇已經有介紹了 GlobalVariable 傳值的方法了

今天要介紹的是 Segue 傳值

首先要在 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


上一篇
【在 iOS 開發路上的大小事-Day03】透過 Global Variable 來傳值
下一篇
【在 iOS 開發路上的大小事-Day05】透過閉包 (Closure) 來傳值
系列文
在 iOS 開發路上的大小事30

尚未有邦友留言

立即登入留言