UIViewController間でのデリゲート以外のイベント通知＆値渡し方法


<http://qiita.com/osamu1203/items/6dedc01e3b975a0ceec4>

例として上記のようなUIViewController間で値を渡したいときに、デリゲートを使っていますが、デリゲート以外の方法として、どのようなやり方がより簡易にできますか？

ParentViewControllerのインスタンスをModal側で扱えばよいのだと思いますが、どのように書いたらよろしいのでしょうか？

少し曖昧な相談ですが、よろしくお願いします。




> ParentViewControllerのインスタンスをModal側で扱えばよいのだと思いますが

という点については、ModelViewController 側で self.presentingViewController
にアクセスすることでそのインスタンスを取得できます。型キャスト（as）は忘れないように。

[code]

    let parentVC = self.presentingViewController as ParentViewController
    let text = parentVC.modalTextLabel.text!
    println(text)
[/code]

しかし、なぜデリゲートのようなパターンがよく使われているかと言えば、処理の実装場所を適切な担当者に振り分けるためですので、モーダル側が親を取得してそこで行うべき処理なのかは十分考える必要があります。




> ParentViewControllerのインスタンスをModal側で扱えばよいのだと思いますが

という点については、ModelViewController 側で self.presentingViewController
にアクセスすることでそのインスタンスを取得できます。型キャスト（as）は忘れないように。

[code]

    let parentVC = self.presentingViewController as ParentViewController
    let text = parentVC.modalTextLabel.text!
    println(text)
[/code]

しかし、なぜデリゲートのようなパターンがよく使われているかと言えば、処理の実装場所を適切な担当者に振り分けるためですので、モーダル側が親を取得してそこで行うべき処理なのかは十分考える必要があります。

