2014年1月16日木曜日

Storyboardを使っているときにAppDelegateからアクティブなUIViewControllerを取得する

タイトルの通りのことをやりたかったんでググってみました!
みんな思うところは同じなんだね。たくさん見つかったよ。
と、思いきや。。。
見つかったのは任意のUIViewControllerをインスタンス化してそこへ画面遷移させようとかそういったものばかり。
つまり、今あるUIViewControllerのインスタンスを取得するのではなく、別ものを作ってしまうということ。
これでは意味がないのですよ!!!

あれこれ試行錯誤しているうちに、オフィシャルのAPIドキュメントに辿り着き(はじめから見ておけよ 汗)、 見つけましたよ、実質的に今表示されているUIViewControllerのインスタンスをとってくる方法。

[self.window.rootViewController presentedViewController];

これで今アクティブになっているUIViewControllerのインスタンスがとれます。
self.window.rootViewControllerはメインのUIViewControllerなので、このUIViewControllerが表示しているUIViewControllerを取得するとそれが今アクティブになっているUIViewControllerというわけです。

間違っていたり、もっとスマートなプロパティなりメソッドなりがあれば指摘いただけると助かります。

0 件のコメント :

コメントを投稿