Ich habe dieses Problem, wenn ich meine App simuliere. Es ist kein Fehler oder eine Warnung, aber es wird in meiner Konsole angezeigt. Hat dies jemals jemand erlebt?
iphone
ios
transition
C. Johns
quelle
quelle
Antworten:
In meinem Fall tritt dieser Fehler auf, wenn Sie in einer Tabellenansicht sehr schnell auf zwei Registerkarten klicken.
Das Ergebnis führt zu einem falschen Titelnamen. Die Schaltfläche "Zurück" verschwindet. Jemand erwähnte das, wenn Sie eine Ansicht drücken ,
set animated:NO
. Der Fehler verschwindet, verursacht aber immer noch ein seltsames Verhalten. Es werden zwei Ansichten verschoben, dann müssen Sie zweimal zurücksetzen, um zum Tabellenansichtsbildschirm zurückzukehren.Methode, die ich versucht habe, um dieses Problem zu lösen:
hinzufügen
BOOL cellSelected;
im
viewWillAppear
cellSelected = YES;
in didselectcell delegate
if (cellSelected){cellSelected = NO; do action ; }
Dies verhindert, dass zwei verschiedene Zellen sehr schnell angeklickt werden.
quelle
In meinem Fall ist es passiert, als ich
[self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
innerhalbUINavigationController
derviewDidLoad
Methode eines Elements ausgelöst habe .Das Verschieben in die
viewDidAppear
Methode löste das Problem.Der Grund ist sehr wahrscheinlich, dass
viewDidLoad
nicht alle ausgefallenen Animationen bereits fertig sind, während inviewDidAppear
allem alles erledigt ist.quelle
Ich habe auch dieses Problem. Ich habe zwei Lösungen für dieses Problem gefunden:
UINavigationController
in der dieses Problem behoben wurde. Gepufferter Navigationscontrollerquelle
Sie sollten Ihren Code in einer anderen Schleife ausführen, um dies zu vermeiden
quelle
dispatch_async
Hauptwarteschlange einzuschließen . Die Sachedispatch_async
ist, dass es wartet, bis alle anderen Animationen in der Hauptwarteschlange fertig sind. Es ist viel besser als eine Verzögerung zu verwenden, weil: 1- Sie nie wissen, ob eine Verzögerung ausreicht, es hängt von Ihrem Host-Gerät ab 2- Sie werden die Verzögerung übertreiben und etwas wird verzögern. versuchen Sie dies:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
Ich hatte viele Probleme mit dem gleichen Problem. Ich habe das auf diese Weise gelöst
1) Sie verwenden keinen
UIViewController's
bestimmten InitialisiererinitWithNibName:bundle:
. Versuchen Sie es statt nurinit
.2)
animated:YES
auf NEIN setzen, und das hat das Problem gelöst. z.B.[self.navigationController pushViewController: viewController_Obj animated:NO];
quelle
Ich hatte das gleiche Problem mit dem Navigations-Controller und schob andere Controller darauf. Ich habe versucht, Buffered Navigation Controller und verschiedene andere Ansätze zu verwenden, aber es hat bei mir nicht funktioniert. Nachdem ich einige Zeit damit verbracht hatte, es herauszufinden, bemerkte ich, dass dieses Problem auftritt, wenn Sie versuchen, einen neuen Ansichts-Controller zu drücken, während die vorherige Transaktion (Animation) ausgeführt wird (ungefähr 0,5 Sekunden Dauer, denke ich). Wie auch immer, ich habe eine schnelle Lösung gefunden, indem ich den Navigationscontroller delegiert und auf das Ende der vorherigen Animation gewartet habe.
quelle
Stellen Sie sicher, dass Sie nicht vergessen, in -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear die richtige Supermethode für Ihre Überladung dieser Methoden aufzurufen. In meinem Fall stimmte der Methodenname beispielsweise nicht wie folgt überein:
Beachten Sie, dass die Methoden zum Anzeigen und Verschwinden nicht übereinstimmen
quelle
super.viewWillAppear()
Innerhalb anrufenviewDidDisappear()
.'Unausgeglichene Aufrufe zum Beginnen / Beenden von Erscheinungsübergängen für'
Sagt, dass eine Animation gestartet wird, bevor die letzte verwandte Animation nicht fertig ist. Lassen Sie also einen View-Controller platzen, bevor Sie den neuen drücken? Oder knallt es vielleicht zur Wurzel? Wenn ja, versuchen Sie dies ohne Animation
[self.navigationController popToRootViewControllerAnimated:NO];
Und sehen Sie, ob dies das Problem behebt. In meinem Fall hat dies den Trick getan.
quelle
Ich habe dieses Problem erhalten, weil ich einen UIPrintInteractionController von einem viewController ohne UITabbar und weder von UINavigationBar aufgerufen habe. Es scheint, dass der UIPrintInteractionController nicht den richtigen printInteractionControllerParentViewController erhalten hat. Das Implementieren der Methode im Delegaten und das Zurückgeben des aktuellen rootViewControllers hat für mich funktioniert.
quelle
Ich hatte ein ähnliches Problem, bei dem modale Dialoge zurückgespult wurden. Postete die Lösung hier ...
https://stackoverflow.com/a/38795258/324479
[Problem]
Nav Controller -> VC1 -Push -> VC2 -PopOver oder Modal Segue -> VC3.
VC3 wird auf VC1 zurückgespult.
Wenn der Übergang von VC2 zu VC3 PopOver und Modal ist, endet das Abwickeln mit einer Warnung: Unausgeglichene Aufrufe zum Beginnen / Beenden von Erscheinungsübergängen für UIViewController "
Wenn der Übergang von VC zu VC gedrückt wird, ist die Warnung weg.
[Lösung]
Es wäre großartig, wenn sich die Abwicklungslogik darum kümmern würde. Vielleicht ist es ein Fehler, vielleicht auch nicht. In beiden Fällen besteht die Lösung darin, VC2 (den Controller mit dem Popup) zum Ziel des Rücklaufs zu machen und dann zu warten, bis es vollständig angezeigt wird, bevor Sie den Navigationscontroller öffnen. Dadurch wird sichergestellt, dass die Animation zum Zurückspulen (umgekehrtes Popup) genügend Zeit hat, um fertig zu werden, bevor Sie weiter zurückgehen. Selbst wenn die Animationen deaktiviert sind, muss es noch warten, sonst wird der Fehler angezeigt.
Ihr Code für VC2 sollte wie folgt lauten. (Schnell)
quelle
Die Situation kann auftreten, wenn Sie eine Ansicht mit einem modalen Ansichtscontroller als Unteransicht hinzufügen. Am besten zu verwenden:
Grundsätzlich heißt es, dass der Ansichtslebenszyklus für die Ansichtscontroller, die Sie dann anzeigen möchten, nicht optimiert ist.
quelle
Ich habe das gleiche Problem, wenn ich versuche:
in einer Funktion wie
- (void) popUpToLevelTwo;
, und einreturn;
am Ende der Funktion zu setzen, löst das Problemquelle
Ich habe das auch bei
Ich habe das
YES
in a geändertNO
, und das hat das Problem gelöst.quelle
Ich habe das gleiche Problem, wenn ich die Pop-Methode des Navigationscontrollers verwendet habe. In meiner App verwende ich eine separate Logik für den Navigationscontroller. So wurde die Verwendung der Navigationsleiste vermieden und sie ist immer versteckt. Dann benutze ich eine benutzerdefinierte Ansicht und Benachrichtigung für die Behandlung der Backbutton und seiner Ereignisse. Benachrichtigungsbeobachter werden registriert und nicht entfernt. Die Benachrichtigung wird also zweimal ausgelöst und erzeugt den oben genannten Fehler. Überprüfen Sie Ihren Code gründlich, um solche Fehler zu erhalten
quelle
Für das, was es wert ist, habe ich den gleichen Fehler erhalten, wenn ich keinen Aufruf von
[super viewDidLoad:animated]
in meineviewDidLoad
Überschreibung aufgenommen habe.quelle
Ich hatte auch dieses Problem, als ich auf eine Schaltfläche einer NIB tippte. Es stellte sich heraus, dass ich versehentlich die Schaltfläche verdrahtet hatte, um ein Ereignis an zwei IBAction-Methoden zu senden, von denen jede einen pushViewController ausführte: animiert:
quelle
Ich hatte eine Logik implementiert, um zu warten,
UIViewController
bis alle Daten heruntergeladen wurden. Es gab einen Fehler in dieser Logik, der dazu führte, dass dasUIViewController
zu früh gepusht wurde, während noch ein weiterer API-Aufruf ausgeführt wurde.Es bewirkte, dass das gleiche
UIViewController
zweimal von der gedrückt wurdeUINavigationController
und gab diese Warnung.quelle
Grund für Meldung: Diese Meldung wenn bekommen angezeigt und nur , wenn Sie drängen / präsentieren eine andere View - Controller aus
viewWillAppear
,loadView
,init
oderviewDidLoad
Methode der aktuellen View - ControllerSo entfernen Sie Fehlermeldungen: Verschieben Sie Ihren Push- / Präsentationscode in die
viewDidAppear
Methode, um das Problem zu behebenquelle
Swift 4
Mein Problem war, dass ich eine andere VC präsentierte, bevor meine aktuelle fertig gerendert wurde.
Die Lösung bestand darin, mein nächstes VC nach einer kurzen Verzögerung zu präsentieren.
WAS SIE NICHT TUN SOLLTEN
WAS DU MACHEN SOLLTEST
quelle
Ich hatte dieses Problem, als ich vergaß, Break einzustellen. nach dem Drücken der Ansicht in einer switch-Anweisung!
Wie hier:
quelle
Der Grund für den Fehler "Unausgeglichene Aufrufe zum Beginnen / Beenden von Erscheinungsübergängen" liegt in der Navigation zu | zweimal gleichzeitig segeln
quelle
Eine Lösung wäre:
quelle
Sie können darauf stoßen, wenn Sie versuchen, einen UIViewController zu schließen, bevor er vollständig geladen ist.
Ich hatte diese Nachricht in der Konsole und konzentrierte mich ausschließlich auf den UIViewController, der den neuen UIViewController vorstellte. Endlich stellte ich fest, dass das Problem im UIViewController, den ich vorstellte, sich selbst entließ, weil der Benutzer nicht in seinem Konto angemeldet war.
Hoffe das hilft jemandem.
quelle
Das war eine schwierige Frage für mich: Ich habe überschrieben
ohne zu überschreiben:
in meinem Windows Root Navigation Controller. dann beschwerte sich ein untergeordneter Navigationscontroller, als er einen anderen Ansichtscontroller mit der oben genannten Warnung drückte. Die Warnung war nicht die schlimmste, das große Problem war, dass dort der Delegierte des untergeordneten Navigationscontrollers nicht mehr angerufen wurde. weired.
quelle
In meinem Fall habe ich
NSData
vonNSURL
innen 'viewDidLoad
' Methode abgerufen .quelle