昨天介绍完如何跳页,今天将会分享如何跳页传值。
成品:
刚执行模拟器的样子
按下 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 16 - [语料库模型] 04-断词工具比较 Jieba vs CKIP
正文 前几天开始在弄Kubernetes相关LAB的时候不是很顺手,因为这台笔电平常很少使用,所以常...
今天,我要做个简单的小程序,实作前一天所介绍到的Activity功能。我要做的是关於牛排馆的点餐系统...
收假症候群大发作XDD 但今天还是有振奋人心的事情可以做啊 你各位有没有去绑定五倍卷了 希望这个艰辛...
前言 为什麽选在这个时候切入「敏捷」呢?在这之前我们谈论了「沟通」、「当责」与「透明」,这些都是展现...
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...