DAY 18 『 画面间跳页传值 - Protocol And Delegate 』

昨天介绍完如何跳页,今天将会分享如何跳页传值。

成品:

  • 刚执行模拟器的样子

  • 按下 Button 後会跳到这个画面

  • 按下「 按我即可跳回去! 」的按钮後,会跳到回第一个画面,并且将「 未跳页过 」改为「 您已从 SecondVC 跳回 MainVC 」


沿用昨天的画面跳转程序码
在 SecondVC.swift 加入 Protocol 协定的程序码

在 class SecondVC: UIViewController 里加入:
var delegate: ChangeProtocol!
宣告这个画面会遵循 ChangeProtocol,并请委任目标(delegate)去处理 ChangeProtocol 的事件

在 SecondVC 跳页回去 MainVC 的按钮里,加入 ChangeProtocol 的委任:
delegate.changeLableData(lableTxt: "您已从 SecondVC 跳回 MainVC")
请委任目标去处理 changeLableData 事件


在 MainVC.swift 加入:

在 MainVC 跳页去 SecondVC 的按钮里,加入委任:
toSecondVC.delegate = self

这样就完成了两画面间的传值了!

附上完整程序码

//  MainVC.swift

mport UIKit

class MainVC: UIViewController {
    
    @IBOutlet weak var lable: UILabel!
    @IBOutlet weak var btn: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func btnAct(_ sender: UIButton) {
        let toSecondVC = SecondVC()
        toSecondVC.delegate = self
        present(toSecondVC, animated: true)
    }
}

extension MainVC: ChangeProtocol{
    func changeLableData(lableTxt:String){
        lable.text = lableTxt
    }
}
//  SecondVC.swift

import UIKit

class SecondVC: UIViewController {

    var delegate: ChangeProtocol!
    
    @IBOutlet weak var btnToMainVC: UIButton!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func btnPresent(_ sender: UIButton) {
        delegate.changeLableData(lableTxt: "您已从 SecondVC 跳回 MainVC")
        dismiss(animated: true, completion: nil)
    }
}

@objc protocol ChangeProtocol {
    @objc func changeLableData(lableTxt:String)
}

这样就完成跳页传值啦!明天会有新的实作分享,敬请期待!


<<:  Day–30 超解析Excel的vlookup函式

>>:  Day 16 - [语料库模型] 04-断词工具比较 Jieba vs CKIP

Day13,先让我设定一下terminal(插曲)

正文 前几天开始在弄Kubernetes相关LAB的时候不是很顺手,因为这台笔电平常很少使用,所以常...

DAY11:应用程序元件Activity之实作

今天,我要做个简单的小程序,实作前一天所介绍到的Activity功能。我要做的是关於牛排馆的点餐系统...

D7 - 彭彭的课程#Python 有序列表的基本运算 - List、Tuple

收假症候群大发作XDD 但今天还是有振奋人心的事情可以做啊 你各位有没有去绑定五倍卷了 希望这个艰辛...

自然而然的敏捷导入

前言 为什麽选在这个时候切入「敏捷」呢?在这之前我们谈论了「沟通」、「当责」与「透明」,这些都是展现...

Day 26 - Stripe Follow Along Dropdown Navigation [更新]

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...