2012-07-26 23 views
5

Sto usando gli storyboard per la PRIMA volta nella mia app iOS. Ho 2 viste nel mio Storyboard (A & B). Diciamo che A è il mio controller di visualizzazione iniziale nel mio storyboard. Quando la mia app è stata lanciata, posso vedere il controller di visualizzazione A. Finora tutto funziona come da aspettativa. Ora nella mia vista controller A, sto verificando se l'utente è loggato o meno. Se l'utente non ha effettuato il login, desidero presentare il controller della vista B. Come posso visualizzare B modally usando PresentModalViewController in modo programmatico?PresentModalViewController in Storyboard programmaticamente iOS 5

Qui è la mia messa a punto

enter image description here

Ecco il mio codice

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    if (!isUserLoggedIn) { 
     NSLog(@"USER NOT LOGGED IN...."); 
     UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
     LoginViewController *vc = (LoginViewController*)[mainStoryboard instantiateViewControllerWithIdentifier:@"B"]; 
     [self presentModalViewController:vc animated:YES]; 
    } 


} 

Qualsiasi tipo di aiuto è apprezzato. Grazie

risposta

10

Quello che hai fatto finora sembra corretto .. Ti sei ricordato di impostare effettivamente l'identificatore di B nello storyboard?

Inoltre, si potrebbe desiderare di provare

[self.storyboard instantiateViewControllerWithIdentifier:@"B"]; 

invece di quello che stai facendo.

Aggiornamento:

Ecco ciò che il metodo viewDidLoad potrebbe essere simile:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    if (!isUserLoggedIn) { 

     NSLog(@"User is not logged in."); 

     LoginViewController *vc = (LoginViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"B"]; 
     [self presentModalViewController:vc animated:YES]; 

    } 

} 

Inoltre, vedo dall'immagine che il primo controller di vista non è impostato su una particolare classe. Dice solo "View Controller", mentre il secondo mostra "Login View Controller" correttamente.

Nota: non ho accesso a Xcode in questo momento, quindi non l'ho ancora testato.

+0

L'identificatore è impostato correttamente nella storyboard. Dove dovrei scrivere sopra la riga e cosa dovrei rimuovere dal mio codice? – iOSAppDev

+0

@iOSAppDev: Ok. Prova il codice che ho postato ora. Se ciò non funziona, c'è qualcos'altro che è sbagliato/mancante. Inoltre, assicurati che quelle righe di codice siano effettivamente eseguite. È anche possibile aggiungere un'istruzione 'NSLog' in' viewDidLoad' del controller di visualizzazione che si desidera mostrare (LoginViewController), solo per assicurarsi che sia caricato. – matsr

Problemi correlati