J'ai ce problème lorsque je simule mon application, ce n'est pas une erreur ou un avertissement, mais il apparaît dans ma console, est-ce que quelqu'un a déjà connu cela auparavant?
iphone
ios
transition
C.Johns
la source
la source
Réponses:
Dans mon cas, cette erreur se produit lorsque vous cliquez très rapidement sur deux onglets dans une vue de table.
Le résultat provoque un nom de titre incorrect, le bouton de retour disparaît Quelqu'un a mentionné que lorsque vous poussez une vue,
set animated:NO
. L'erreur disparaîtra mais provoquera toujours un comportement étrange. Il pousse deux vues, puis vous devez revenir en arrière deux fois pour revenir à l'écran de vue de la table.Méthode que j'ai essayée pour résoudre ce problème:
ajouter
BOOL cellSelected;
dans
viewWillAppear
cellSelected = YES;
dans le délégué didselectcell
if (cellSelected){cellSelected = NO; do action ; }
Cela permet d'éviter de cliquer très rapidement sur deux cellules différentes.
la source
Dans mon cas, cela s'est produit lorsque j'ai déclenché
[self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
dansUINavigationController
laviewDidLoad
méthode d' un élément .Le déplacer dans la
viewDidAppear
méthode a résolu le problème.La raison est très probable que dans
viewDidLoad
toutes les animations de fantaisie ne sont pas déjà terminées, alors queviewDidAppear
tout est fait.la source
J'ai aussi ce problème. J'ai trouvé deux solutions à ce problème:
UINavigationController
laquelle ce problème a été résolu. Contrôleur de navigation tamponnéla source
Vous devez exécuter votre code dans une boucle différente pour éviter cela
la source
dispatch_async
file d'attente principale. Le problèmedispatch_async
est qu'il attend que toutes les autres animations de la file d'attente principale soient terminées. c'est bien mieux que d'utiliser un délai parce que: 1- vous ne saurez jamais si un délai est suffisant, cela dépend de votre appareil hôte 2- vous finirez par exagérer le délai et quelque chose retardera. essayez ceci:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
J'ai eu beaucoup de problème avec le même problème. J'ai résolu ça de cette façon
1) Vous n'utilisez pas l'
UIViewController's
initialiseur désignéinitWithNibName:bundle:
. Essayez de l'utiliser au lieu de simplementinit
.2) réglé
animated:YES
sur NON, et cela a résolu le problème. par exemple.[self.navigationController pushViewController: viewController_Obj animated:NO];
la source
J'ai eu le même problème en utilisant le contrôleur de navigation et en poussant d'autres contrôleurs dessus. J'ai essayé d'utiliser Buffered Navigation Controller et plusieurs autres approches, mais cela n'a pas fonctionné pour moi. Après avoir passé du temps à le comprendre, j'ai remarqué que ce problème se produit si vous essayez de pousser un nouveau contrôleur de vue alors que la transaction précédente (animation) est en cours (durée d'environ 0,5 seconde, je suppose). Quoi qu'il en soit, j'ai fait une solution rapide en déléguant le contrôleur de navigation et en attendant la fin de l'animation précédente.
la source
Assurez-vous de ne pas oublier dans -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear d'appeler la super méthode appropriée dans votre surcharge de ces méthodes. Par exemple, dans mon cas, j'ai un nom de méthode incompatible comme celui-ci:
remarquez que les méthodes d' apparition et de disparition ne correspondent pas
la source
super.viewWillAppear()
intérieurviewDidDisappear()
."Appels déséquilibrés pour commencer / terminer les transitions d'apparence pour"
Dit qu'une animation est lancée avant que la dernière animation associée ne soit terminée. Alors, ouvrez-vous un contrôleur de vue avant de pousser le nouveau? Ou peut-être sauter à la racine? si oui, essayez de le faire sans animation ie
[self.navigationController popToRootViewControllerAnimated:NO];
Et voir si cela résout le problème, dans mon cas, cela a fait l'affaire.
la source
J'ai eu ce problème parce que j'appelais un UIPrintInteractionController à partir d'un viewController sans UITabbar, et ni UINavigationBar. Il semble que le UIPrintInteractionController n'a pas obtenu le printInteractionControllerParentViewController correct. L'implémentation de la méthode dans le délégué et le retour du rootViewController actuel a fonctionné pour moi.
la source
J'ai eu un problème similaire qui impliquait le rembobinage des dialogues modaux. Posté la solution ici ...
https://stackoverflow.com/a/38795258/324479
[Problème]
Nav Controller -> VC1 -Push -> VC2 -PopOver ou Modal Segue -> VC3.
VC3 revient à VC1.
Lorsque le segment de VC2 à VC3 est PopOver et Modal, le déroulement se termine par un avertissement: Appels déséquilibrés pour commencer / terminer les transitions d'apparence pour UIViewController "
Si le Segue de VC à VC est push, l'avertissement est parti.
[Solution]
Ce serait formidable si la logique de déroulement prendrait soin de cela. C'est peut-être un bug, peut-être pas. Dans tous les cas, la solution est de faire de VC2 (le contrôleur qui a le popup) la cible du rembobinage, puis d'attendre qu'il finisse d'apparaître avant de faire apparaître le contrôleur de navigation. Cela garantit que l'animation de rembobinage (popup inversé) a suffisamment de temps pour se terminer avant de revenir en arrière. Même avec les animations désactivées, il faut encore attendre sinon vous obtenez l'erreur.
Votre code pour VC2 doit être le suivant. (Rapide)
la source
La situation peut se produire si vous ajoutez une vue avec un contrôleur de vue modale comme vue secondaire. Meilleur à utiliser:
Cela signifie essentiellement que le cycle de vie de la vue n'est pas rationalisé pour les viewControllers que vous essayez d'afficher alors.
la source
J'ai le même problème en essayant de faire:
dans une fonction comme
- (void) popUpToLevelTwo;
, et mettre unreturn;
à la fin de la fonction résout le problèmela source
J'ai aussi ça à
J'ai changé le
YES
en aNO
, et cela a résolu le problème.la source
J'ai le même problème lorsque j'ai utilisé la méthode pop de navigationcontroller Dans mon application, j'utilise une logique distincte pour le contrôleur de navigation, donc évité l'utilisation de la barre de navigation et elle est toujours masquée. Ensuite, j'utilise une vue et une notification personnalisées pour gérer le bouton arrière et ses événements. les observateurs de notification sont enregistrés et non supprimés. Ainsi, la notification se déclenche deux fois et crée l'erreur mentionnée ci-dessus. Vérifiez votre code à fond pour obtenir de tels défauts
la source
Pour ce que ça vaut, j'ai eu cette même erreur en n'incluant pas un appel à
[super viewDidLoad:animated]
dans monviewDidLoad
remplacement.la source
J'ai également eu ce problème lorsque j'ai tapé sur un bouton d'un NIB. Il s'avère que j'avais accidentellement câblé le bouton pour envoyer un événement à deux méthodes IBAction, chacune faisant un pushViewController: animated:
la source
J'ai mis en place une logique pour attendre en poussant le
UIViewController
jusqu'à ce que toutes les données soient téléchargées. Il y avait une erreur dans cette logique qui a fait pousser leUIViewController
trop tôt alors qu'il y avait encore un autre appel d'API en cours.Il a poussé la même chose
UIViewController
deux fois par leUINavigationController
et a donné cet avertissement.la source
Cause du message: Ce message ne sera pas affiché si et seulement si vous poussez / présenter un autre contrôleur Vue
viewWillAppear
,loadView
,init
ouviewDidLoad
méthode de régulateur de courant VoirviewDidAppear
Méthode de suppression du message d'erreur: déplacer votre code de poussée / présentation vers la méthode résoudra le problèmela source
Swift 4
Mon problème était que je présentais un autre VC avant que mon actuel ne soit rendu.
La solution était de présenter mon nextVC après un bref délai.
CE QUE VOUS NE DEVRIEZ PAS FAIRE
CE QUE TU DEVRAIS FAIRE
la source
J'ai eu ce problème lorsque j'ai oublié de régler Break; après avoir poussé la vue dans une instruction switch!
Comme ici:
la source
la raison de l'erreur «Appels déséquilibrés pour commencer / terminer les transitions d'apparence» est lorsque vous naviguez | segue deux fois en même temps
la source
une solution serait,
la source
Vous pouvez rencontrer cela si vous essayez de fermer un UIViewController avant qu'il ne soit fini de charger.
J'avais ce message dans la console et je me concentrais entièrement sur l'UIViewController qui présentait le nouveau UIViewController, sans succès. J'ai finalement découvert que le problème était dans l'UIViewController que je présentais se rejetait parce que l'utilisateur n'était pas connecté à son compte.
J'espère que cela aide quelqu'un.
la source
C'était difficile pour moi: j'ai dépassé
sans écraser:
dans mon contrôleur de navigation racine de fenêtre. puis un contrôleur de navigation enfant s'est plaint en poussant un autre contrôleur de vue avec l'avertissement mentionné ci-dessus. L'avertissement n'était pas le pire, le gros problème était que là-bas, le délégué du contrôleur de navigation enfant n'était plus appelé. weired.
la source
Dans mon cas, j'allais chercher
NSData
de l'NSURL
intérieur 'viewDidLoad
' méthode.la source