一般我们在做传值动作的时候,会有好几种方式可以做,像是用 Segue、Closure、Delegate、Global Variable、Notification 等方式,每种都有不同的应用场景,所以就依情况来使用~
前面已经有介绍过 GlobalVariable、Segue 传值了
我们要做的是将第一个画面上的 TextField 里的值传到第二个画面的 TextView 上
画面设计这里就不示范了,大家就自己设计就可以了
首先我们在 MainVC.swift 里先设计一个 Function,定义这个 Closure 要来接收第一个画面上 TextField 的值
// 透过闭包 (closure) 来传值
func closureSendValue(_ handler: (String) -> Void) {
guard let text = textField.text else { return }
handler(text)
}
这边宣告了一个 handler 的变数,型别为 (String) -> Void,也就是 Closure
我们给了一个 String 的接收值跟 Void 的回传值 (也就是无回传值)
并让 Closure 透过 text 来接收 TextField 的值
接着在 SecondVC.swift 里先宣告一个变数 mainVC 型别为 MainVC,然後在需要用到的地方来呼叫刚刚在 MainVC.swift 里定义的 Closure,这边是示范在 viewDidLoad 里呼叫,然後将值显示在 TextView 上
var mainVC: MainVC?
override func viewDidLoad() {
super.viewDidLoad()
mainVC?.closureSendValue({ text in
textView.text = text
})
}
在 MainVC.swift 跳页按钮的 Action Function 里加入下方的程序码 (有写注解的那行)
@IBAction func pushToSecondVC(_ sender: UIButton) {
let vc = SecondVC(nibName: "SecondVC", bundle: nil)
vc.mainVC = self // 加入这一行,将 SecondVC 里的 mainVC 指向 MainVC 这个档案
self.navigationController?.pushViewController(vc, animated: true)
}
本篇的范例程序码:GitHub
此篇会介绍 Bootstrap 常用的对齐语法注意事项以及常见问题分为上下两集。上集介绍 displ...
今天是30天程序语言研究的第十天,研究的语言一样是python,今天主要学习的是module的使用和...
偶尔分享一下新歌... Majority Element 题目连结:https://leetcod...
图片是网站关键的视觉元素,更不用说电商网站了,相信大家都会在图片下功夫,让商品能够更加吸引顾客购买。...
计画性停电後, Zabbix 一直疯狂跳警报,因为我们有设置只要警报有被触发 Line 群组 就会跳...