2011-11-22 4 views
26

Después de algunas investigaciones en la web sin éxito, vengo aquí para hacerle la pregunta sobre mi advertencia."Llamadas no balanceadas para comenzar/finalizar la transición de apariciones" advertencia cuando se empuja una vista de forma modal en XCode 4 con Storyboard

En realidad, tengo una vista V1 con un controlador de navegación y quiero presionar una vista modal V2 cuando V1 ha terminado de cargar. Entonces uso el método performSegueWithIdentifier (estoy usando el guión gráfico). Aquí está mi código:

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

Y cuando compilo, tengo esta advertencia:

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

¿Puede alguien ayudarme?

Respuesta

57

Parece que puede estar realizando la segue en -viewWillAppear: generando así dos mensajes -viewWillAppear: sin 2 mensajes correspondientes -viewDidAppear.

Intente realizar el segue en -viewDidAppear.

+0

Sí exactamente! Funciona ! Muchas gracias ! – Vinestro

+0

Lo resolvió para mí también. – OlivaresF

+5

Me había encontrado esto al realizar la transición en '-viewDidLoad', y estaba trabajando en ello llamando' performSegue' dentro de 'performSelector: withObject: afterDelay' con un retraso de 0, pero eso fue complicado.Esta solución me permite llamar 'performSegue' directamente en' -viewDidAppear: '. ¡Gracias! –

5

tuve este problema, pero lo que había hecho se encuentra en una UIViewController había ligado una transición suave de una UIButton y también codificado en una función nextBtnPressed:, por lo que en realidad estaba empujando dos nuevos UIViewControllers por un botón de prensa. Limitarlo a solo el segue lo arregló. Pero me tomó un poco de investigación ver que había hecho esto doble.

1

Las razones para esto son múltiples y son muy específicas para el contexto y la programación. Por ejemplo, lo que estaba haciendo era

  1. inicialización de un archivo de sonido, jugarlo (asíncrona) durante 1,4 segundos,
  2. hacer una imagen se mueva por la pantalla utilizando la animación programada para durar 1,4 segundos y,
  3. con un temporizador establecido en 1,4 segundos después del paso 2, presionando un controlador de visualización.

Lo que descubrí es que si NO tengo las instrucciones para estos 3 pasos, una después de la otra (si las mezclo), entonces aparece el error "Llamadas no balanceadas ...". Además, si paso el tiempo del control de visualización a menos de 1,4 segundos, también recibo el mensaje.

Por lo tanto, verifique que la secuencia y el tiempo de las instrucciones de su programa sean correctos.

5

'desequilibrada llama para comenzar/transiciones de apariencia final de'

Dice una animación se inicia antes de la última isnt animación relacionada hecho. Entonces, ¿está sacando cualquier controlador de vista antes de presionar el nuevo? ¿O puede estar apareciendo en la raíz? Si es así, intente hacerlo sin la animación , es decir, [self.navigationController popToRootViewControllerAnimated: NO];

Y ver si esto resuelve el problema, en mi caso, esto funcionó.

Cuestiones relacionadas