fs_*_*gre 5 delegates protocols pass-data ios swift
在下面的代码中,我有一个ViewController("SenderViewController"),ViewController当点击一个按钮时,它会将消息传递给main .我不完全理解的是messageData()主要方法如何ViewController知道何时收听消息.
有人可以解释一下主要触发messageData()方法的原因是什么ViewController?
SenderViewController:
import UIKit
protocol SenderViewControllerDelegate {
func messageData(data: AnyObject)
}
class SenderViewController: UIViewController {
@IBOutlet weak var inputMessage: UITextField!
var delegate: SenderViewControllerDelegate?
@IBAction func sendData(sender: AnyObject) {
/
if inputMessage.text != ""{
self.presentingViewController!.dismissViewControllerAnimated(true, completion: nil)
self.delegate?.messageData(inputMessage.text!)
}
}
}
Run Code Online (Sandbox Code Playgroud)
主ViewController:
import UIKit
class ViewController: UIViewController, SenderViewControllerDelegate{
@IBOutlet weak var showData: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func goToView(sender: AnyObject) {
let pvc = storyboard?.instantiateViewControllerWithIdentifier("senderViewController") as! SenderViewController
pvc.delegate = self
self.presentViewController(pvc, animated:true, completion:nil)
}
// What triggers this method, how it know when to listen?
func messageData(data: AnyObject) {
self.showData.text = "\(data)"
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
对象并不完全监听方法调用。他们坐在那里,等待召唤。
线
self.delegate?.messageData(inputMessage.text!)
Run Code Online (Sandbox Code Playgroud)
从你SenderViewController是一个函数调用。(术语方法和函数几乎可以互换,尽管method通常用于对象的函数。)它在 中调用函数 messageData ViewController。
| 归档时间: |
|
| 查看次数: |
7203 次 |
| 最近记录: |