mainWindow の rootViewController として UINavigationController を設定しました。
コードからビューコントローラーをプッシュおよびポップします (したがって、ユーザーの操作によってプッシュおよびポップがトリガーされることはありません)。
アプリケーションがフォアグラウンドにあるときにそれを行うと、すべてが正常に機能します。
しかし、アプリケーションがバックグラウンドで実行されているときにそれを行うと、正しい ViewController が表示されません。
この問題は、iOS 7.x でのみ再現可能です。
サンプル プロジェクトは、次のリンクにあります: https://www.dropbox.com/sh/pmxnpgtrjxwehs7/_l3NW4xllf
問題を再現するには、アプリをバックグラウンドにして 12 秒待ってから、アプリをフォアグラウンドに戻します。UINavigationBar の戻るボタンを使用してナビゲートすると、navigationController の rootView は表示されません (表示されるはずです): バックグラウンドはまだ緑色です。黄色ではありません (navigationController の rootViewController の背景は黄色です)。
アプリがフォアグラウンドにある場合、「aaaaa」というラベルの付いたボタンをタップすると同じナビゲーションが行われますが、完了すると、GUI は正しい状態になります。
簡単に言うと、これはアプリがフォアグラウンドにある場合は機能しますが、アプリがバックグラウンドにある場合は機能しません:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"pushViewController!");
[self pushViewController:[[BViewController alloc] init] animated:YES];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self popToRootViewControllerAnimated:YES];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self pushViewController:[[BViewController alloc] init] animated:YES];
});
});
});
この問題をどのように解決できるか知っていますか?
前もって感謝します!