2012-01-13 17 views
55

Voglio cambiare sotto codice con storyboard con Xcode 4.2.Come cambio "initwithNibName" nello storyboard?

UIViewController * example  = [[ExampleViewController alloc] initWithNibName:@"ExampleViewController" bundle:nil]; 

Ora il file ExampleViewController.xib esiste. ma voglio farlo con lo storyboard. per favore aiutatemi. (Non sono bravo in inglese.)

risposta

132

La classe UIStoryboard è tuo amico:

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" 
               bundle:nil]; 
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"]; 
+0

Grazie ~ ^^ La tua risposta è molto utile. – jokor7

+0

Stephen, grazie! Ho cercato per un po 'di tempo cercando di capire come istanziare la visualizzazione di uno Storyboard. La tua risposta (e la domanda di jokor7) sono come un fresco bicchiere d'acqua nel mezzo del deserto asciutto del Sahara. – bejonbee

+5

È davvero tuo amico. Se hai solo uno storyboard principale, non devi inizializzarlo come sopra, ma puoi semplicemente chiamare: '[self.storyboard instantiateViewControllerWithIdentifier: @" "];' – JCoster22

8
  • Se è ancora nel proprio file xib, non si modifica nulla.
  • Se hai spostato tutto in uno storyboard, non avresti spesso bisogno di farlo perché collegherei i controller di visualizzazione usando segues.

Se nessuno di quanto sopra sono vere, cioè il controller di vista è sulla storyboard, ma non segue si connette ad esso, poi si desidera il metodo di UIStoryboard instantiateViewControllerWithIdentifier: descritto nel the documentation. Devi impostare l'identificatore nello storyboard per farlo funzionare.

+0

grazie @jrturton ^^ Il mio controller della vista è sulla storyboard, ma non segue ad esso. E cambia il codice initWithNibName in 'UIViewController * example = [self.view instantiateViewControllerWithIdentifier: @ "ExampleView"];'. Ma ha un errore. Non sono uguali entrambi i codici? – jokor7

+1

@ jokor7 Non si invia 'instantiateViewControllerWithIdentifier:' a self.view oa qualsiasi altra vista, la si invia a uno storyboard. Più specificamente, è necessario inviarlo a * lo * storyboard che contiene il controller di visualizzazione. Vedi la lezione di UIStoryboard, per favore. – Caleb

+0

@ jokor7 non può aggiungere altro al commento di Caleb. Con quella risposta di Stephen dovresti avere tutto ciò di cui hai bisogno. – jrturton

Problemi correlati