【在 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


<<:  Html元素(DAY3)

>>:  [Day16]Basically Speaking

Day 17: Structural patterns - Proxy

目的 将实际执行的服务遮蔽,取而代之的,建立一个代理人负责对外窗口的身份,以及对内与该服务沟通。 说...

Day 3 : 案例分享(1.1) -B2C经典流程 电子商务、POS + 进销存 + 会计(应收付) +制造(产品组合、产品转换)

案例前情提要 会想来使用Odoo的公司,通常是在市面上现有ERP系统找不到解决方案的公司,归纳一下 ...

Day.6 线性资料

线性的资料储存方式一般有两种 array (阵列) list node (链结) 这两种差别到底在那...

[Day 30] 认识LIFF

所以 LIFF 到底是什麽? 从前,我们只能用 LINE app,在聊天室内与朋友一对一谈话,或是用...

初学者跪着学JavaScript Day10 : Expression 表达式/运算式 和Statement 述句

一日客家话:中文:吃喜酒 客语:ㄅㄨㄣˊ 拧呛 Expressions 在中文会翻译表达式/运算式 ...