2012-04-25 12 views
11

Sto provando ad attivare uno storyboard seguito non appena viewDidLoad viene chiamato su un controller di visualizzazione. Il seguito ha un identificatore allegato, e funziona bene quando chiamato da un metodo che è collegato a un pulsante o altro controllo. Ma non funziona all'interno di viewDidLoad. Semplicemente fallisce. C'è qualche regola riguardo l'ignoranza dei passaggi in viewDidLoad?Perché doesSecurityWithIdentifier non funziona all'interno di viewDidLoad?

Ho provato sia questo:

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

e questo:

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

Né lavoro.

+0

Perché vorresti caricare un'altra vista proprio quando un altro sta per apparire? Hai provato ad aggiungerlo nel "viewWillAppear" invece (anche se non capisco perché vorresti quello). – Pochi

risposta

19

Non è possibile eliminare un controller di visualizzazione che non è ancora stato presentato. didLoad ha puramente funzioni di gestione della memoria, è possibile utilizzarlo come (parte di un) costruttore. Che cosa può funzionare, è quello di iniziare un seguito in viewDidAppear, tuttavia vorrei suggerire di iniziare con la vista che si desidera alla prima volta.

1

Probabilmente il motivo potrebbe essere che il sistema operativo ignora la seconda chiamata di transizione sullo schermo mentre una è in corso. Nel ViewDidLoad, la transizione della vista (della vista corrente) non è ancora completa. Stai chiedendo un'altra transizione prima che venga completata e il sistema operativo lo ignori. Deve essere la ragione per cui il seguito funziona quando chiamato da una funzione diversa. Prova a chiamare all'interno di ViewDidAppear (o dopo un ritardo)