2

ナビゲーション コントローラーを動作させるのに深刻な問題があり、この Web サイトで関連する質問をほぼすべて試しました。

私の問題は、プログラムでセグエを実行すると、ナビゲーション バーに遷移があるように見えますが、ビューは変わらないことです。代わりに次のエラーが表示されます。

2013-10-22 13:47:30.059 App[2236:a0b] nested push animation can result in corrupted navigation bar
2013-10-22 13:47:30.411 App[2236:a0b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2013-10-22 13:47:30.501 App[2236:a0b] Unbalanced calls to begin/end appearance transitions for 

私のストーリーボードは次のようになります。

ここに画像の説明を入力

LoginViewController では、いくつかの条件に基づいてセグエを実行します。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear];
    NSString* appState = [AppConfig getAppState];
    if ([appState isEqualToString:APP_STATE_WAITING]) {
        [self performSegueWithIdentifier:@"Load" sender:self];
    }
    else if ([appState isEqualToString:APP_STATE_REGISTRATION_AVAILABLE]) {
        [self performSegueWithIdentifier:@"SignUp" sender:self];
    }
}

LoadingViewController では、実行する前に Web サービスからの応答を待ちます。

- (void)segueToWaitingList:(NSUInteger)behind inFront:(NSUInteger)inFront
{
    [MosaycOptions setAppState:APP_STATE_WAITING];
    dispatch_async(dispatch_get_main_queue(), ^{
         [self performSegueWithIdentifier:@"Waiting" sender:self];
    });
}

そして、私に問題を与えるのはそのセグエです。ナビゲーション バーは遷移しますが、ビューは遷移せず、次のエラーが表示されます。

2013-10-22 13:47:30.059 App[2236:a0b] nested push animation can result in corrupted navigation bar
2013-10-22 13:47:30.411 App[2236:a0b] Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
2013-10-22 13:47:30.501 App[2236:a0b] Unbalanced calls to begin/end appearance transitions for 

アプリはクラッシュしませんが、セグエは発生しません。待機リスト ビューに移行せず、読み込み中のままで、コンソールにエラーを出力します。ログイン画面に戻らずに戻ると、次の空白の画面が表示されます。

ここに画像の説明を入力

もう一度押すと、次のエラーでクラッシュします: http://pastebin.com/7mCyeQv9

ナビゲーション スタックで明らかに何かがおかしくなっていますが、デバッガーを使用して検査したところ、まったく問題ないように見えます。すべてが正常にプッシュされます。一生解けません。これは、私が以前に使用した標準的なナビゲーション コントローラーのセットアップです。

何か案は?

4

2 に答える 2

10

私はついに問題を理解しました。

performSegueWithIdentifierviewDidAppearLoadingViewController で呼び出される前に呼び出されていました。基本的に同期エラー。

于 2013-10-22T15:56:38.527 に答える
3

viewDidLoadでセグエを実行しないでください。viewDidApperarで実行してみてください:

アップルのドキュメント:

View Controller のコンテンツをプログラムで表示する … 別の表示されている View Controller から表示します。…</p>

于 2013-10-22T13:15:25.683 に答える