2013-06-13 3 views
23

Devo creare un passaggio a livello di codice, tuttavia quando faccio clic sul pulsante il controller di visualizzazione non cambia al successivo, l'ID di Storyboard è impostato e ancora non funziona. Mi mancano altri assegni per far funzionare questo?instantiateViewControllerWithIdentifier - ID storyboard impostato ma ancora non funzionante

Vedere codice qui sotto:

EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 

sua guida mi fa impazzire. Grazie

+2

Is 'self.storyboard' impostato o è pari a zero? – Wain

+0

@Wain è probabilmente impostato su zero perché non l'ho impostato, dove posso impostare lo storyboard su se stesso? –

risposta

6

Usa

+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil. 

Quindi provare questo

self.storyboard=[UIStoryboard storyboardWithName:@"Your_Story_Board_Name" bundle:[NSBundle mainBundle]]; 
EntryViewController *entryController = [self.storyboard instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 
+0

non ha funzionato, grazie comunque –

+0

Ho usato questa risposta per istanziare soryboard in AppDelegate. Grazie! –

0

Non è possibile impostare i controller di vista storyboard. È di sola lettura e viene impostato quando viene creato il controller di visualizzazione. Invece, dovrai ottenere lo storyboard da qualche altra parte o caricarlo.

È possibile ottenere lo storyboard dal controller di visualizzazione radice di AppDelegate. O utilizzare + (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil.

+0

scusa non ha funzionato Wain –

+0

In che modo non ha funzionato? – Wain

+0

Non si sta spostando sul controller della vista successivo –

2

Prova questo,

UIStoryboard * storyboardobj=[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 

EntryViewController *entryController = [storyboardobj instantiateViewControllerWithIdentifier:@"go"]; 
[self.navigationController pushViewController:entryController animated:YES]; 
+0

Stavo guardando un altro esempio come questo, appena provato il tuo e ancora senza fortuna! –

32

Dentro il mio viewDidLoad ho messo il pulsante che chiama goldStarOpen:

UIButton *btnTwo = [UIButton buttonWithType:UIButtonTypeCustom]; 
btnTwo.frame = CGRectMake(250, 20, 40, 40); 
[btnTwo addTarget:self action:@selector(goldStarOpen) forControlEvents:UIControlEventTouchUpInside]; 
[btnTwo setImage:[UIImage imageNamed:@"GoldStar.png"] forState:UIControlStateNormal]; 
[self.view addSubview:btnTwo]; 

All'interno goldStarOpen Ho codice che è quasi identica alla vostra.

- (void)goldStarOpen 
{ 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName: 
           @"MainStoryboard" bundle:[NSBundle mainBundle]]; 
    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"GoldStar"]; 
    [self presentViewController:myController animated:YES completion:nil]; 
} 

goldStarOpen attiva un ViewController nello storyboard.

Potrebbe essere necessario impostare l'ID Storyboard del controller di visualizzazione che si sta tentando di caricare. Questo si trova nell'ispettore, appena sotto il punto in cui si assegna una classe personalizzata al proprio controller di visualizzazione.

enter image description here

+2

questa dovrebbe essere la risposta accettata – Richmond

+0

Ho avuto lo stesso problema, l'ho risolto impostando il modulo corretto per la classe nell'ispettore (vedi screenshot sopra). – chris

+0

Qualcuno può rispondere? http://stackoverflow.com/questions/38959445/astoryboard-instantiateviewcontrollerwithidentifiermyid-returns-nil-but-not?noredirect=1#comment65274351_38959445 – harmeet07

3

provare questo Storyboard Scegli UIViewController-> Xcode-> Editor-> Emabed In-> Navigation Controller

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"YourStoryboard" 
                 bundle: nil]; 

YourViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier: @"YourViewController"]; 
[self.navigationController pushViewController:vc animated:YES];