2012-04-25 9 views
11

Estoy tratando de desencadenar un guion gráfico tan pronto como se llame a viewDidLoad en un controlador de vista. El segue tiene un identificador adjunto, y funciona bien cuando se lo llama desde un método que está vinculado a un botón u otro control. Pero no funciona dentro de viewDidLoad. Simplemente falla silenciosamente. ¿Hay alguna regla sobre la ignorancia de segue en viewDidLoad?¿Por qué no funcionaSegueWithIdentifier dentro de viewDidLoad?

He intentado tanto esto:

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

y esto:

[self dismissViewControllerAnimated:YES completion:^() { 
[self performSegueWithIdentifier:@"mySegue" sender:self]; 
}]; 

Ni trabajo.

+0

¿Por qué le gustaría cargar otra vista cuando está por aparecer otra? ¿Has intentado agregarlo en el "viewWillAppear" en su lugar (aunque no entiendo por qué querrías eso). – Pochi

Respuesta

19

No puede cerrar un controlador de vista que aún no se ha presentado. didLoad tiene funciones de administración de memoria pura, puede usarlo como (parte de un) constructor. Lo que puede funcionar, es iniciar una transición en viewDidAppear, sin embargo, le sugiero que comience con la vista que desee por primera vez.

1

La razón más probable podría ser que el sistema operativo ignore la llamada de transición de la segunda pantalla mientras está en progreso. En su ViewDidLoad, la transición de vista (de la vista actual) aún no está completa. Está pidiendo otra transición antes de que se complete y el SO lo ignora. Debe ser la razón por la cual la segue funciona cuando se llama desde una función diferente. Intente llamar dentro de ViewDidAppear (o después de un retraso de tiempo)

Cuestiones relacionadas