9

以下のコードには、ボタンがタップされたときにViewControllerメッセージをメインに渡す ("SenderViewController") があります。ViewController私が完全に理解していない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!)  
        }  
    }  
}  

メイン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)"  
    }  
} 

どうもありがとう!

4

5 に答える 5

5

オブジェクトはメソッド呼び出しを正確にリッスンしません。彼らはそこに座って、呼び出されるのを待っています。

この線

self.delegate?.messageData(inputMessage.text!)

あなたからSenderViewControllerは関数呼び出しです。(メソッドと関数という用語はほぼ同じ意味ですが、methodは通常オブジェクトの関数に使用されます。) で関数 messageData を呼び出しますViewController

于 2016-08-02T13:16:30.280 に答える
2
self.delegate?.messageData(inputMessage.text!)
于 2016-08-02T13:46:00.170 に答える