it-swarm.com.de

Warnung "Unausgeglichene Anrufe zum Beginn/Ende von Erscheinungsübergängen", wenn in XCode 4 mit Storyboard eine Ansicht auf modale Weise verschoben wird

Nach einigen Recherchen im Internet ohne Erfolg komme ich hierher, um Ihnen die Frage nach meiner Warnung zu stellen.

Eigentlich habe ich eine Ansicht V1 mit einem Navigationscontroller und ich möchte eine modale Ansicht V2 pushen, wenn V1 fertig geladen ist . Ich verwende also die performSegueWithIdentifier-Methode (ich verwende Storyboard) . Hier ist mein Code :

[self performSegueWithIdentifier:@"showConnexionViewSegue" sender:self];

Und beim Kompilieren habe ich folgende Warnung erhalten:

Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x6849b30>

Kann mir jemand helfen?

26
Vinestro

Es hört sich an, als würden Sie vielleicht in -viewWillAppear: das Segment ausführen, wodurch zwei -viewWillAppear:-Nachrichten ohne zwei entsprechende -viewDidAppear-Nachrichten generiert werden.

Versuchen Sie, das Segment in -viewDidAppear auszuführen.

57
Mark Adams

"Unsymmetrische Anrufe, für die Erscheinungsübergänge beginnen oder enden sollen"

Sagt, dass eine Animation gestartet wird, bevor die letzte verwandte Animation nicht ausgeführt wird .. _. Wollen Sie also einen beliebigen View-Controller platzieren, bevor Sie den neuen drücken?. Wenn ja, versuchen Sie es ohne Animation [self.navigationController popToRootViewControllerAnimated: NO];

Und sehen, ob dies das Problem löst. In meinem Fall hat dies den Trick getan.

5
infiniteLoop

Ich hatte dieses Problem, aber was ich getan hatte, war auf einer UIViewController. Ich hatte ein Segue von einer UIButton verlinkt und auch in eine nextBtnPressed:-Funktion codiert, also drückte ich tatsächlich zwei neue UIViewControllers auf den One-Button-Druck. Durch die Beschränkung auf nur ein Segment wurde es behoben. Es brauchte jedoch einige Nachforschungen, um zu sehen, dass ich diese Verdoppelung durchgeführt hatte.

5
DonnaLea

Die Gründe dafür sind vielfältig und sehr spezifisch für den Kontext und die Programmierung. Was ich zum Beispiel tat, war

  1. sounddatei initialisieren, 1,4 Sekunden (asynchron) abspielen, 
  2. bewegen eines Bildes über den Bildschirm mit einer Animation, deren Dauer 1,4 Sekunden beträgt.
  3. mit einem Timer, der auf 1,4 Sekunden nach Schritt 2 eingestellt ist, wird ein Viewcontroller gedrückt.

Was ich entdeckte, ist, dass wenn ich NICHT die Anweisungen für diese 3 Schritte nacheinander habe (wenn ich sie vermische), dann die Fehlermeldung "Unbalanced Calls ..." erscheint. Auch wenn ich den Push des Viewcontrollers mal auf weniger als 1,4 Sekunden stelle, bekomme ich auch die Meldung.

Überprüfen Sie daher die Reihenfolge und den Zeitpunkt Ihrer Programmanweisungen.

1
Anjaan