Swift のデリゲート? 質問する

Swift のデリゲート? 質問する

デリゲートをNSUserNotificationCenterDelegateSwift で作成するにはどうすればよいでしょうか?

ベストアンサー1

2 つのビュー コントローラー間のデリゲートに関する簡単な説明を次に示します。

ステップ1:UIViewController で、データを削除/送信するプロトコルを作成します。

protocol FooTwoViewControllerDelegate:class {
    func myVCDidFinish(_ controller: FooTwoViewController, text: String)
}

ステップ2:送信クラス(UIViewcontrollerなど)でデリゲートを宣言します。

class FooTwoViewController: UIViewController {
    weak var delegate: FooTwoViewControllerDelegate?
    [snip...]
}

ステップ3:クラス メソッドでデリゲートを使用して、プロトコルを採用する任意のメソッドである受信メソッドにデータを送信します。

@IBAction func saveColor(_ sender: UIBarButtonItem) {
        delegate?.myVCDidFinish(self, text: colorLabel.text) //assuming the delegate is assigned otherwise error
}

ステップ4:受信クラスでプロトコルを採用する

class ViewController: UIViewController, FooTwoViewControllerDelegate {

ステップ5:デリゲートメソッドを実装する

func myVCDidFinish(_ controller: FooTwoViewController, text: String) {
    colorLabel.text = "The Color is " +  text
    controller.navigationController.popViewController(animated: true)
}

ステップ6:prepareForSegue でデリゲートを設定します。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "mySegue" {
        let vc = segue.destination as! FooTwoViewController
        vc.colorString = colorLabel.text
        vc.delegate = self
    }
}

これで動作するはずです。もちろんこれは単なるコードの一部ですが、概要は伝わるはずです。このコードの詳しい説明については、こちらのブログ記事をご覧ください。

セグエとデリゲート

デリゲートの内部で何が起こっているのか興味があるなら、ここでそのことについて書きました:

代表者による内部調査

おすすめ記事