2015-01-19 3 views
6

sto cercando presente ViewController ho creato con gli storyboard:iOS Presente viewController ottenere schermo nero

AuthViewController *authViewController = [[AuthViewController alloc] init]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:authViewController]; 
    UIViewController *vc = [[[[UIApplication sharedApplication] windows] firstObject] rootViewController]; 
    [vc presentViewController:nav animated:YES completion:nil]; 

Ma ottenerlo con lo schermo nero. Quale potrebbe essere il problema?

risposta

13

Alloc init AuthViewController non significa che creerà un layout di visualizzazione per il controller.

Qui il controller di vista non carica la sua vista è per questo che si sta ottenendo schermo nero. Usa l'oggetto storyboard e l'identificatore del controller della vista per caricare la sua vista.

Specificare lo identificatore dello storyboard nello storyboard del controller AuthViewController.

Aggiungere Storyboard ID e segnare true per Use Storyboard ID opzione come immagine qui sotto in:

enter image description here

ora ottenere AuthViewController oggetto controller utilizzando sottostante Codice:

AuthViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"AuthViewController"]; 
+1

Grazie, ho un problema simile, e la tua risposta funziona bene per me! :) –

2

Il ViewController per AuthViewController è presente in Storyboard? Se sì, allora si dovrebbe passare un Storyboard ID e dovrebbe iniziare la vostra AuthViewController in questo modo:

AuthViewController *authViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"_STORYBOARD_ID_"]; 

Spero che questo aiuta.

4

si può fare riferimento al frammento di seguito per storyboard:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
AuthViewController *authViewController = [storyboard instantiateViewControllerWithIdentifier:@"**YOUR_STORYBOARD_ID**"]; 
[authViewController setModalPresentationStyle:UIModalPresentationFullScreen]; 
[self presentViewController:authViewController animated:YES completion:nil]; 
0

Il mio problema era che la classe, ad esempio AuthViewController nello storyboard era un semplice UIViewController e nella mia classe veloce era un UITabBarController. Ecco perché non ha reso nulla.

Errore stupido, ma spero di poter risparmiare un po 'di tempo per qualcuno.