- ベストアンサー
Xcodeでの画面遷移について
- Xcode5.0を使用してアプリを作成しています。アプリがバックグラウンドから再びアクティブになった際に、画面遷移の処理を行いたいと考えています。
- AppDelegateのapplicationDidBecomeActiveを使用して、View Controllerに処理を渡しています。しかし、その方法では画面遷移が実行されない問題が発生しています。
- 画面遷移の処理を行うタイミングを調整する方法を探しています。- (void)applicationDidBecomeActiveと同じタイミングで画面遷移を行う方法はありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
xcode5で全くの新規プロジェクトに質問のコードを書いて 試してみたら、アプリをアクティブにしたタイミングで 意図通り画面遷移しました。 ただ、一番最初にViewControllerをロードしたタイミングで、 viewDidAppearが呼ばれる前にapplicationDidBecomeActiveが 呼ばれており、このタイミングで画面遷移すると、警告メッセージが 表示されました。(それでも画面遷移はします) このタイミングでは画面遷移しないよう制御する必要があると 思います。 なお、presentModalViewControllerは、iOS6から廃止された メソッドです。iOS6以降をターゲットにするなら、 presentViewControllerを使うべきだと思います。 (presentModalViewControllerを使っても、一応画面遷移しました。) ただ普通は、xcode5を使うならiOS7用のSDKを使うことになり、 presentModalViewControllerを書くだけでwarningが出ると思うのですが、 もしかしてiOS5用のSDKとかを特別に設定して使っているんでしょうか? 私が確認したのは、BaseSDK、deplayment targetともiOS7です。 全くの新規プロジェクトに質問のコードを書いて、画面遷移できる ことを確認できたら、そこから本来のプロジェクトに少しづつ合わせ ていけば、画面が遷移しなくなる原因がつかめると思います。
その他の回答 (1)
1 まず、ViewControllerのインスタンスが、activeなVCであるという仮定ができるのでしょうか? 2 以下の部分を変更する --------------------------------- ViewController.m { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive) name:@"applicationDidBecomeActive" object:nil]; } ------------------------------------ ViewController.m { [super viewDidLoad]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:@"applicationDidBecomeActive" object:nil]; } 3 本当に、ViewControllerのapplicationDidBecomeActive がよばれているのか、ブレークポイントで確認 くらいでしょうか。
お礼
ご回答ありがとうございました。 アドバイスを元に、問題を解決することができました。
お礼
ご回答ありがとうございました。 原因が画面遷移にあると思い込んでいましたので、回答内容が参考になりました。 質問内容のコードと照らし合わせて原因を調べてみたところ、実際の原因は画面遷移のコードとは別のところにありました。 (画面遷移の参照元のユーザーデフォルトの数値がアクティブになるたびにリセットされていたようです(汗)) おかげさまで解決することができました。