0

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];
        });
    });
});

この問題をどのように解決できるか知っていますか?

前もって感謝します!

4

1 に答える 1