Tengo este problema cuando simulo mi aplicación, no es un error ni una advertencia, pero aparece en mi consola, ¿alguien ha experimentado esto antes?
iphone
ios
transition
C.Johns
fuente
fuente
Respuestas:
En mi caso, este error ocurre cuando hace clic en dos pestañas en una vista de tabla muy rápido.
El resultado causa un nombre de título incorrecto, el botón de retroceso desaparece. Alguien mencionó que cuando presionas una vista
set animated:NO
,. El error desaparecerá pero seguirá provocando un comportamiento extraño. Empuja dos vistas, luego debe retroceder dos veces para volver a la pantalla de vista de tabla.Método que probé para resolver este problema:
añadir
BOOL cellSelected;
en
viewWillAppear
cellSelected = YES;
en el delegado de didselectcell
if (cellSelected){cellSelected = NO; do action ; }
Esto ayuda a evitar hacer clic muy rápido en dos celdas diferentes.
fuente
En mi caso sucedió cuando disparé
[self performSegueWithIdentifier:@"SomeIdentifier" sender:self];
dentroUINavigationController
delviewDidLoad
método de un elemento .Moverlo al
viewDidAppear
método resolvió el problema.La razón muy probable es que
viewDidLoad
no todas las animaciones de fantasía ya se han terminado, mientras que enviewDidAppear
todo está hecho.fuente
Tengo este problema también. Encontré dos soluciones a este problema:
UINavigationController
donde se resolvió este problema. Controlador de navegación con búferfuente
Debe ejecutar su código en un bucle diferente para evitar esto
fuente
dispatch_async
cola principal. Lo que pasadispatch_async
es que espera hasta que todas las demás animaciones de la cola principal estén listas. es mucho mejor que usar un retraso porque: 1- nunca sabrás si un retraso es suficiente, depende de tu dispositivo anfitrión 2- terminarás exagerando el retraso y algo se retrasará. prueba esto:dispatch_async(dispatch_get_main_queue(), ^{[self presentViewController:self.yourModalVC animated:YES completion:nil];});
Tuve muchos problemas con el mismo problema. Resolví esto de esta manera
1) No está utilizando el
UIViewController's
inicializador designadoinitWithNibName:bundle:
. Intente usarlo en lugar de soloinit
.2) establecido
animated:YES
en NO, y eso resolvió el problema. p.ej.[self.navigationController pushViewController: viewController_Obj animated:NO];
fuente
Tuve el mismo problema al usar el controlador de navegación y presionar otros controladores hacia él. Intenté usar el controlador de navegación con búfer y varios otros enfoques, pero no funcionó para mí. Después de pasar un tiempo para resolverlo, noté que este problema ocurre si intenta presionar un nuevo controlador de vista mientras la transacción anterior (animación) está en progreso (aproximadamente 0.5 segundos de duración, supongo). De todos modos, hice una solución rápida al delegar el controlador de navegación y esperar a que finalizara la animación anterior.
fuente
Asegúrese de no olvidar en -viewWillAppear, -viewDidAppear, -viewDidLoad, -viewWillDisappear, -viewDidDisappear para llamar al método super adecuado en su sobrecarga de esos métodos. Por ejemplo, en mi caso, el nombre del método no coincide de esta manera:
observe que los métodos de aparecer y desaparecer no coinciden
fuente
super.viewWillAppear()
dentroviewDidDisappear()
.'Llamadas no balanceadas para comenzar / finalizar transiciones de apariencia para'
Dice que una animación se inicia antes de que no se complete la última animación relacionada. Entonces, ¿está abriendo algún controlador de vista antes de presionar el nuevo? ¿O puede estar saliendo a la raíz? Si es así, intente hacerlo sin animación, es decir
[self.navigationController popToRootViewControllerAnimated:NO];
Y vea si esto resuelve el problema, en mi caso esto funcionó.
fuente
Recibí este problema porque estaba llamando a un UIPrintInteractionController desde un viewController sin UITabbar, y ni UINavigationBar. Parece que UIPrintInteractionController no obtuvo el printInteractionControllerParentViewController correcto. Implementar el método en el delegado y devolver el rootViewController actual funcionó para mí.
fuente
Tuve un problema similar que implicaba rebobinar los diálogos modales. Publicado la solución aquí ...
https://stackoverflow.com/a/38795258/324479
[Problema]
Controlador de navegación -> VC1 -Push -> VC2 -PopOver o Modal Segue -> VC3.
VC3 está volviendo a VC1.
Cuando la Segue de VC2 a VC3 es PopOver y Modal, la desconexión finaliza en una advertencia: Llamadas no balanceadas para comenzar / finalizar transiciones de apariencia para UIViewController "
Si se empuja Segue de VC a VC, la advertencia desaparece.
[Solución]
Sería genial si la lógica de relajación se encargara de esto. Quizás sea un error, quizás no. De cualquier manera, la solución es hacer que VC2 (el controlador que tiene la ventana emergente) sea el objetivo del rebobinado, luego esperar a que termine de aparecer antes de que aparezca el controlador de navegación. Eso asegura que la animación de rebobinado (ventana emergente inversa) tenga tiempo suficiente para terminar antes de retroceder más. Incluso con las animaciones apagadas, todavía tiene que esperar o, de lo contrario, obtendrá el error.
Su código para VC2 debería ser el siguiente. (Rápido)
fuente
La situación puede ocurrir si está agregando una vista con un controlador de vista modal como una subvista. Mejor usar:
Básicamente, está diciendo que el ciclo de vida de la vista no está optimizado para los viewControllers que está tratando de mostrar en ese momento.
fuente
Tengo un problema similar al intentar hacer:
en una función como
- (void) popUpToLevelTwo;
, y poner unreturn;
al final de la función resuelve el problemafuente
También tengo esto en
Cambié el
YES
a aNO
, y eso resolvió el problema.fuente
Tengo el mismo problema cuando utilicé el método pop de navigationcontroller En mi aplicación, uso una lógica separada para el controlador de navegación, así que evité el uso de la barra de navegación y siempre está oculta. Luego utilizo una vista personalizada y una notificación para manejar el botón trasero y sus eventos. los observadores de notificaciones se registran y no se eliminan. Entonces, la notificación se dispara dos veces y crea el error mencionado anteriormente. Verifique su código a fondo para obtener tales fallas
fuente
Por lo que vale, obtuve este mismo error al no incluir una llamada a
[super viewDidLoad:animated]
en miviewDidLoad
anulación.fuente
También tuve este problema cuando presioné un botón de un NIB. Resulta que accidentalmente conecté el botón para enviar un evento a dos métodos IBAction, cada uno de los cuales hizo un pushViewController: animated:
fuente
Implementé alguna lógica para esperar presionando
UIViewController
hasta que se descargaran todos los datos. Hubo un error en esta lógica que hizo que se empujara elUIViewController
demasiado pronto mientras aún había otra llamada a la API en curso.Hizo que el mismo
UIViewController
fuera empujado dos veces por elUINavigationController
y dio esta advertencia.fuente
Razón por mensaje: Este mensaje a ser visualizado, si y sólo si usted está empujando / presentar otro controlador Vista desde
viewWillAppear
,loadView
,init
oviewDidLoad
el método de la corriente Vista ControladorManera de eliminar el mensaje de error: mover su código de presentación / presentación al
viewDidAppear
método resolverá el problemafuente
Rápido 4
Mi problema era que estaba presentando otro VC antes de que el actual terminara de renderizarse.
La solución fue presentar mi nextVC después de un breve retraso.
LO QUE NO DEBE HACER
LO QUE DEBE HACER
fuente
Tuve este problema cuando me olvidé de configurar Break; después de presionar la vista en una declaración de cambio!
Como aquí:
fuente
la razón detrás del error "Llamadas no balanceadas para comenzar / finalizar transiciones de apariencia" es cuando navega | segue dos veces al mismo tiempo
fuente
una solución sería,
fuente
Puede encontrarse con esto si intenta descartar un UIViewController antes de que termine de cargarse.
Tenía este mensaje en la consola y me estaba enfocando completamente en el UIViewController que presentaba el nuevo UIViewController, sin éxito. Finalmente descubrí que el problema estaba en el UIViewController que estaba presentando y se estaba descartando porque el usuario no había iniciado sesión en su cuenta.
Espero que esto ayude a alguien.
fuente
Este fue difícil para mí: he anulado
sin anular:
en mi controlador de navegación raíz de ventana. luego, un controlador de navegación para niños se quejó al presionar otro controlador de vista con la advertencia mencionada anteriormente. La advertencia no fue la peor, el gran problema fue que allí ya no se llamaba al delegado del controlador de navegación infantil. cansado.
fuente
En mi caso me retracto
NSData
desdeNSURL
dentro 'viewDidLoad
método'.fuente