UINavigationController 'beschädigt navigation bar" - Problem

Ich habe ernsthafte Probleme damit, meinen navigation controller zu arbeiten und haben versucht, so ziemlich jede Frage im Zusammenhang mit auf dieser website.

Mein problem ist, dass wenn ich eine segue programmgesteuert, es scheint sich ein übergang in der Navigationsleiste, aber die Aussicht ändert sich nicht. Ich sehe die folgenden Fehler statt:

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 

Mein storyboard sieht so aus:

UINavigationController 'beschädigt navigation bar

In LoginViewController führen wir eine überleitung basiert auf einer Bedingung:

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

In LoadingViewController wir warten auf eine Antwort von einem web service bevor Sie das tun:

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

Und es ist dieser übergang, der mir das problem. Die nav-bar übergänge aber in der Ansicht nicht und wir sehen die folgenden Fehler ausgedruckt:

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 

Die app stürzt nicht ab, aber kein übergang Auftritt, wird es nicht der übergang auf die Warteliste anzeigen, aber bleibt einfach beim Laden und druckt die Fehler auf die Konsole. Wenn ich die zurück-Taste drücken, anstatt Sie zurück zum login-screen bekomme ich die folgende leere Bildschirm:

UINavigationController 'beschädigt navigation bar

Wenn ich drücken Sie wieder stürzt es ab mit dieser Fehlermeldung: http://pastebin.com/7mCyeQv9

Etwas ist offenbar immer Durcheinander mit den Navigations-stack, jedoch habe ich geprüft, es mit dem debugger und es sieht absolut in Ordnung, alles wird geschoben, als normal. Ich kann nicht für das Leben von mir herausfinden. Dies ist nur eine standard-navigation controller-setup, das ich verwendet habe, vor.

Irgendwelche Ideen?

Warum verwenden Sie "dispatch_async(dispatch_get_main_queue (), ^ {"viewDidAppear? viewDidAppear führen Sie immer in der main queue.
Guter Punkt, war übrig von einem anderen Ort. Das entfernen dieser nicht etwas ändern.
Sie sollten mit viewDidAppear:(BOOL)animated - Methode nicht viewDidAppear
Sollte Sie nicht anrufen performSegueWithIdentifier auf Ihre UINavigationController? I. e. rufen Sie [self.navigationController performSegueWithIdentifier:...] statt [self performSegueWithIdentifier:...]?
Warum nennst du performSegue auf navigation-controller??? Es ist nur ein wrapper, müssen Sie entweder root-oder top-view-controller.

InformationsquelleAutor Michael | 2013-10-22

Schreibe einen Kommentar