swiftで画面遷移時の関数の実行


swiftでアプリ開発をしています。

画面A・画面Bとありまして  
画面Aから画面Bが呼ばれます。  
で、画面Bから画面Aに戻った時に、画面Aの関数を実行したいのですが  
方法がわかりません。  
画面Aから画面Bは下記のようにStoryboard IDを使ってモーダル表示しています。  
【画面A】

[code]

    var selfStoryboard: UIStoryboard?
    selfStoryboard = self.storyboard
    nex = selfStoryboard!.instantiateViewControllerWithIdentifier("Storyboard_ID") as UIViewController
    self.presentViewController(nex, animated: true, completion: nil)
    
[/code]

画面Bでは下記のように記述し画面を閉じています。  
【画面B】

[code]

    self.dismissViewControllerAnimated(true, completion:nil)
    
[/code]

このようにして画面を閉じた後に、画面Aの特定な関数を実行するにはどうしたらよいのでしょうか。




モーダルによる画面遷移の場合、遷移元のViewControllerは、`UIViewController`クラスのプロパティ`presentingViewController`で取得できます。  
遷移元のViewControllerを、`BaseViewController`、呼びたい`BaseViewController`のメソッドを、`func
doAnything()`とすると

[code]

    if let controller = self.presentingViewController as? BaseViewController {
        controller.doAnyThing()
    }
    
[/code]

> 画面Bから画面Aに戻った時に、画面Aの関数を実行したい

戻ったときに実行されるのではなく、上のコードは戻る前に実行されますから、厳密にいうと、あなたのご要望には沿っておりません。それで問題ないとは思いますが、どうしても「閉じた後」でなければならない事情があるのなら、`dismissViewControllerAnimated()`の引数`completion`を使います。

[code]

    let controller = self.presentingViewController as? BaseViewController
    self.dismissViewControllerAnimated(true, completion: {
        controller?.doAnything()
    })
    
[/code]

クロージャ内で`self.presentingViewController`を使うと、うまく動かないので、こういう書き方になっています。

