Xcode5.0でアプリを作成しています。
アプリがバックグラウンドから再びアクティブになるときに画面遷移の処理をするために
以下の方法にてAppDelegateのapplicationDidBecomeActiveからView Controllerに処理を渡しています。
AppDelegate.m
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"applicationDidBecomeActive" object:nil];
}
ViewController.m
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidBecomeActive)
name:@"applicationDidBecomeActive"
object:nil];
}
- (void)applicationDidBecomeActive {
ViewController *View = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondView"];
[self presentModalViewController:View animated:YES];
}
ViewController.mの- (void)applicationDidBecomeActiveで画面遷移の処理をしたいのですが、ViewDidAppearでは出来る画面遷移がapplicationDidBecomeActiveでは実行されない状態です。
ググって調べたところ、読み込みのタイミングが問題らしいことはなんとなく解ったのですが、
どうにかして、- (void)applicationDidBecomeActiveと同じタイミング(アプリがアクティブになったとき)で画面遷移を行う方法はありますでしょうか?
No.2ベストアンサー
- 回答日時:
xcode5で全くの新規プロジェクトに質問のコードを書いて
試してみたら、アプリをアクティブにしたタイミングで
意図通り画面遷移しました。
ただ、一番最初にViewControllerをロードしたタイミングで、
viewDidAppearが呼ばれる前にapplicationDidBecomeActiveが
呼ばれており、このタイミングで画面遷移すると、警告メッセージが
表示されました。(それでも画面遷移はします)
このタイミングでは画面遷移しないよう制御する必要があると
思います。
なお、presentModalViewControllerは、iOS6から廃止された
メソッドです。iOS6以降をターゲットにするなら、
presentViewControllerを使うべきだと思います。
(presentModalViewControllerを使っても、一応画面遷移しました。)
ただ普通は、xcode5を使うならiOS7用のSDKを使うことになり、
presentModalViewControllerを書くだけでwarningが出ると思うのですが、
もしかしてiOS5用のSDKとかを特別に設定して使っているんでしょうか?
私が確認したのは、BaseSDK、deplayment targetともiOS7です。
全くの新規プロジェクトに質問のコードを書いて、画面遷移できる
ことを確認できたら、そこから本来のプロジェクトに少しづつ合わせ
ていけば、画面が遷移しなくなる原因がつかめると思います。
ご回答ありがとうございました。
原因が画面遷移にあると思い込んでいましたので、回答内容が参考になりました。
質問内容のコードと照らし合わせて原因を調べてみたところ、実際の原因は画面遷移のコードとは別のところにありました。
(画面遷移の参照元のユーザーデフォルトの数値がアクティブになるたびにリセットされていたようです(汗))
おかげさまで解決することができました。
No.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 がよばれているのか、ブレークポイントで確認
くらいでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 和訳の手伝いをお願いします 2 2023/02/27 11:42
- 英語 Because growth factors regulate abundance of micro 1 2022/03/28 10:12
- 英語 Because growth factors regulate abundance of micro 1 2022/03/31 09:32
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- au(KDDI) 特定の画面を見るとスマホが固まります ご覧頂き有難うございます。 特定のページを見るとスマホが固まり 1 2023/08/21 19:29
- 宇宙科学・天文学・天気 銀河のハビタブルゾーンを確率的セルオートマトンという数値的にシミュレーションした結果、「群島」の様な 2 2023/06/06 23:10
- HTML・CSS htmlで画面遷移させたい 1 2022/10/28 18:19
- オンラインゲーム 2023年以降にマビノギを仮想PCでプレイする方法 1 2023/01/30 11:39
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンでファイルを開く時、...
-
アイコンに付いている緑のチェ...
-
アプリ「みてね」について 困っ...
-
LINEで電話をかけたら、「相手...
-
discordというアプリが、通話を...
-
位置情報アプリwhooについて 彼...
-
whooというアプリは、位置情報...
-
アプリ保管庫につきまして。
-
プロセカは同じ端末でデータを...
-
16歳男子です。 最近性欲が強く...
-
spacedeskというアプリがパソコ...
-
指数
-
自衛官の彼を信じていいのか不...
-
gの違う方のやつの出し方を教え...
-
EaseUSやAOMEIのバックアップソ...
-
タブレットやスマホのブラウザ...
-
Clipboxで保存した動画が見れな...
-
スペースデスクというアプリは...
-
LINEで文章が重複して送られる...
-
アクリーというアクスタのアプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アイコンに付いている緑のチェ...
-
スペースデスクというアプリは...
-
パソコンでファイルを開く時、...
-
位置情報アプリwhooについて 彼...
-
whooというアプリは、位置情報...
-
LINEで電話をかけたら、「相手...
-
アプリ保管庫につきまして。
-
アクリーというアクスタのアプ...
-
gの違う方のやつの出し方を教え...
-
Windows Update 後、Office2019...
-
タブレットやスマホのブラウザ...
-
16歳男子です。 最近性欲が強く...
-
QRコードで、読み取って読ん...
-
spacedeskというアプリがパソコ...
-
EaseUSやAOMEIのバックアップソ...
-
CubePDFをインストールしたら、...
-
会社で変なアプリ入れられました
-
携帯simに、GPSや、位置情報っ...
-
Simejiのアプリで文字を筆記体...
-
残データ容量0.1Gになりました。
おすすめ情報