Llamadas desequilibradas para comenzar / finalizar transiciones de apariencia para <FirstViewController: 0x2a2c00>

Tengo este problema cuando simulo mi aplicación, no es un error o una advertencia, pero aparece en mi console, ¿alguien alguna vez ha experimentado esto antes?

En mi caso, este error se produce onclick en dos tabs en una vista de tabla muy rápido.

El resultado provoca un nombre incorrecto, desaparece el button de retroceso. Alguien mencionó que cuando presiona una vista, set animated:NO . El error desaparecerá pero aún provocará un comportamiento extraño. Presiona dos vistas, luego debes retroceder dos veces para recuperar la pantalla de vista de tabla.

Método que probé para resolver este problema:

agregue BOOL cellSelected;

en viewWillAppear cellSelected = YES;

en didselectcell delegate if (cellSelected){cellSelected = NO; do action ; } if (cellSelected){cellSelected = NO; do action ; }

Esto ayuda a evitar hacer clic en dos células diferentes muy rápido.

En mi caso sucedió cuando [self performSegueWithIdentifier:@"SomeIdentifier" sender:self]; dentro del método viewDidLoad del elemento viewDidLoad .

viewDidAppear método viewDidAppear resolvió el problema.

Es muy probable que en viewDidLoad no se hayan terminado todas las animaciones, mientras que en viewDidAppear todo está hecho.

Tengo este problema también. Encontré dos soluciones a este problema:

  1. Puedes ver esta solución arriba.
  2. Encontré una subclass de UINavigationController donde se resolvió este problema. Controlador de navigation en búfer

Debería ejecutar su código en bucle diferente para evitar esto.

  double delayInSeconds = 0.1; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ // Put your code here [self presentViewController:self.yourModalVC animated:YES completion:nil]; }); 

Tuve muchos problemas con el mismo problema. Resolví esto de esta manera

1) No está utilizando UIViewController's inicializador designado de initWithNibName:bundle: Intente usarlo en lugar de solo init .

2) set animated:YES a un NO, y eso resolvió el problema. p.ej. [self.navigationController pushViewController: viewController_Obj animated:NO];

Tuve el mismo problema al usar el controller de navigation y presionar a otros controlleres. Traté de usar el Controlador de Navegación Buffenetworking y varios otros enfoques, pero no funcionó para mí. Después de pasar un time para descubrirlo, noté que este problema se produce si intentas presionar el nuevo controller de vista mientras se está ejecutando una transacción (animation) anterior (supongo que dura alnetworkingedor de 0.5 seg). De todos modos, hice una solución rápida con la delegación del controller de navigation y la espera de la finalización de la animation anterior.

Asegúrese de no olvidar in -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear para llamar al método super adecuado en la sobrecarga de esos methods. Por ejemplo, en mi caso, no coincide con el nombre del método como este:

 -(void)viewDidAppear { [super viewDidDisappear]; //some code staff .. } 

Observe que aparecen y desaparecen los methods que no coinciden.

'Llamadas desequilibradas para comenzar / finalizar transiciones de apariencia para'

Dice que se inició una animation antes de que la última animation relacionada no se haya realizado. Entonces, ¿está apareciendo algún controller de vista antes de presionar el nuevo? ¿O puede aparecer en la raíz? si es así, intente hacerlo sin animation, por ejemplo [self.navigationController popToRootViewControllerAnimated:NO];

Y mira si esto resuelve el problema. En mi caso, este fue el truco.

Motivo del post: este post se muestra si y solo si está presionando / presentando otro controller de viewWillAppear desde el viewWillAppear , loadView , init o viewDidLoad del controller de vista actual

Manera de eliminar el post de error: Mueva su código de presentación / presentación para viewDidAppear método viewDidAppear resolverá el problema

La situación puede ocurrir si está agregando una vista con un controller de vista modal como vista secundaria. Mejor para usar:

 -(void) viewDidAppear:(BOOL)animated { [self presentViewController:self.yourModalVC animated:YES completion:nil]; } 

Básicamente dice que el ciclo de vida de la vista no está optimizado para aquellos viewControllers que está intentando mostrar entonces.

Tengo el mismo problema al tratar de hacer:

 [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES]; 

en una function como - (void) popUpToLevelTwo; , y para poner un return; al final de la function resuelve el problema

También conseguí esto en

 [self dismissModalViewControllerAnimated:YES]; 

Cambié el YES por un NO , y eso resolvió el problema.

Tengo el mismo problema cuando usé el método pop de navigationcontroller. En mi aplicación utilizo una lógica separada para el controller de navigation, así que evité el uso de la barra de navigation y siempre está oculta. Luego uso una vista personalizada y una notificación para manejar el backbutton y sus events. los observadores de notificación están registrados y no se eliminan. Entonces, la notificación se dispara dos veces y crea el error mencionado anteriormente. Revise su código a background para get dicho error.

Por lo que vale, obtuve este mismo error al no include una llamada a [super viewDidLoad:animated] en mi viewDidLoad override.

También tuve este problema cuando toqué un button de un NIB. Resulta que había conectado accidentalmente el button para enviar un evento a dos methods IBAction, cada uno de los cuales hizo un pushViewController: animated:

Tenía algo de lógica implementada para esperar a presionar el UIViewController hasta que se downloadan todos los datos. Hubo un error en esta lógica que provocó que el UIViewController demasiado temprano mientras todavía había otra llamada de la API en progreso.

Causó que el UIViewController presionara el mismo UINavigationController y emitió esta advertencia.

Recibí este problema porque llamaba a un UIPrintInteractionController desde un viewController sin UITabbar, y tampoco UINavigationBar. Parece que UIPrintInteractionController no obtuvo el printInteractionControllerParentViewController correcto. Implementar el método en el delegado y devolver el rootViewController actual funcionó para mí.

  - (UIViewController*)printInteractionControllerParentViewController:(UIPrintInteractionController*)printInteractionController; 

Tuve un problema similar que involucró el rebobinado de los cuadros de dialog modales. Publiqué la solución aquí …

https://stackoverflow.com/a/38795258/324479

[Problema]

Nav Controller -> VC1 -Push -> VC2 -PopOver o Modal Segue -> VC3.

VC3 está volviendo a VC1.

Cuando el Segue de VC2 a VC3 es PopOver y Modal, el desenrollamiento termina en una advertencia: Llamadas desequilibradas para comenzar / finalizar transiciones de apariencia para UIViewController "

Si el Segue de VC a VC es empujado, la advertencia desaparece.

[Solución]

Sería genial si la lógica de desenrollar se hiciera cargo de esto. Tal vez sea un error, tal vez no. De cualquier manera, la solución es hacer que el VC2 (el controller que tiene la window emergente) sea el objective del rebobinado, luego espere a que termine de aparecer antes de abrir el controller de navigation. Eso asegura que la animation de rebobinado (inversión inversa) tenga el time suficiente para terminar antes de moverse más atrás. Incluso con las animaciones desactivadas, todavía tiene que esperar o de lo contrario obtendrá el error.

Su código para VC2 debe ser el siguiente. (Rápido)

 class VC2: UIViewController { private var unwind = false @IBAction func unwindToVC1(segue:UIStoryboardSegue) { unwind = true } override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) if unwind { self.navigationController?.popViewControllerAnimated(false) } } } 

Tuve este problema cuando olvidé establecer Break; ¡Después de presionar la vista en una instrucción de cambio!

Como aquí:

 case 1:{ SomeViewController *someViewController = [[SomeViewController alloc]initWithNibName:@"SomeViewController" bundle:Nil]; [self.navigationController pushViewController:someViewController animated:YES]; [someViewController release]; } break; //Forgetting to set break here: 

la razón detrás del error "Llamadas desequilibradas para comenzar / finalizar transiciones de apariencia" es cuando navega | segue dos veces al mismo time

una solución sería,

 [NSTimer scheduledTimerWithTimeInterval:0.05(or as requinetworking) target:self selector:@selector(your_selector_method_to_push_the_view) userInfo:nil repeats:NO]; 

Puede ejecutar esto si intenta descartar un UIViewController antes de que termine de cargarse.

Tenía este post en la console y me estaba centrando por completo en el UIViewController que presentaba el nuevo UIViewController, sin éxito. Finalmente descubrí que el problema estaba en que UIViewController estaba presentando se estaba desestimando porque el usuario no estaba conectado a su count.

Espero que esto ayude a alguien.

Esto fue difícil para mí: he anulado

 override func shouldAutomaticallyForwardRotationMethods() -> Bool { return true } 

sin anular:

 override func shouldAutomaticallyForwardAppearanceMethods() -> Bool { return true } 

en mi controller de navigation raíz de la window. entonces un controller de navigation secundario se quejó cuando presionó a otro controller de vista con la advertencia mencionada anteriormente. La advertencia no fue la peor, el gran problema fue que allí no se llamó al delegado del controller de navigation secundario. Weinetworking

En mi caso, estaba NSData de NSURL dentro del método ' viewDidLoad '.