2012-12-13 14 views
98

Sono nuovo nello sviluppo di IOS e recentemente avviato in Xcode 4.5. Ho visto per ogni viewController che potevo impostare alcune variabili di identità incluso l'ID dello storyboard. Cos'è questo e come posso usarlo?Che cos'è un ID StoryBoard e come posso utilizzarlo?

enter image description here

ho iniziato a cercare su StackOverflow e non riusciva a trovare alcuna spiegazione per questo. Ho pensato che non sia solo una stupida etichetta che posso impostare per ricordare il mio controller giusto? Che cosa fa?

risposta

117

L'ID dello storyboard è un campo String che è possibile utilizzare per creare un nuovo ViewController basato su tale storyboard di ViewController. Un esempio di utilizzo potrebbe essere da qualsiasi ViewController:

//Maybe make a button that when clicked calls this method 

- (IBAction)buttonPressed:(id)sender 
{ 
    MyCustomViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 

    [self presentViewController:vc animated:YES completion:nil]; 
} 

Questo creerà un MyCustomViewController basato sul storyboard ViewController si è denominato "MyViewController" e presentarlo sopra la View Controller corrente

E se siete nella vostra applicazione delegare si potrebbe usare

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

Edit: Swift

@IBAction func buttonPressed(sender: AnyObject) { 
    let vc = storyboard?.instantiateViewControllerWithIdentifier("MyViewController") as MyCustomViewController 
    presentViewController(vc, animated: true, completion: nil) 
} 

Modifica per Swift> = 3:

@IBAction func buttonPressed(sender: Any) { 
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController 
    present(vc, animated: true, completion: nil) 
} 

e

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 
+0

Proviamo questo, e come si ottiene il self.storyboard' – RTB

+0

self.storyboard è possibile accedere da qualsiasi viewcontroller. Ora modificherò la mia risposta in modo da poter vedere – Eric

+0

E se fosse necessario accedervi dal mio AppDelegate o da qualsiasi altra classe? – RTB

7

Per aggiungere alla risposta di Eric e aggiornarlo per Xcode 8 e Swift 3:

Un ID storyboard fa esattamente ciò che il il nome implica: identifica. Solo che è identifica a visualizza il controller in un file storyboard. È come lo storyboard sa quale controller di visualizzazione è quale.

Ora, non essere confuso dal nome. Un ID storyboard non identifica uno "storyboard". Uno storyboard, secondo la documentazione di Apple, 'rappresenta i controller di visualizzazione per l'interfaccia utente di tutte o parte della tua app.' Quindi, quando hai qualcosa di simile all'immagine qui sotto, hai uno storyboard chiamato Main.storyboard che ha due controller di visualizzazione, ognuno dei quali potrebbe avere un ID storyboard (il loro ID nello storyboard).

enter image description here

È possibile utilizzare ID storyboard di un controller della vista per istanziare e restituire quel controller della vista. Puoi quindi andare avanti per manipolarlo e presentarlo come vuoi. Per utilizzare l'esempio di Eric, dire che si desidera presentare un controller di vista con identificatore 'MyViewController' quando si preme un tasto, si dovrebbe fare in questo modo:

@IBAction func buttonPressed(sender: Any) { 
    // Here is where we create an instance of our view controller. instantiateViewController(withIdentifier:) will create an instance of the view controller every time it is called. That means you could create another instance when another button is pressed, for example. 
    let vc = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! ViewController 
    present(vc, animated: true, completion: nil) 
} 

prega di prendere nota delle variazioni di sintassi.

+0

L'icona di avviso gialla indica è dovuto al fatto che il secondo controller di visualizzazione non ha un punto di ingresso e/o ID. Questo può essere risolto assegnando un ID storyboard o collegandolo a un altro controller di visualizzazione nello storyboard. In questo modo, lo storyboard sa come raggiungerlo e identificarlo. – Taiwosam

+0

Impossibile trovare il campo ID storyboard, quindi grazie per l'immagine. È nella stessa posizione su Xcode 9. –

Problemi correlati