web-dev-qa-db-fra.com

Qu'est-ce qu'un identifiant StoryBoard et comment puis-je l'utiliser?

je suis nouveau sur IOS en développement et récemment lancé dans Xcode 4.5. J'ai vu pour chaque viewController que je pouvais définir des variables d'identité, y compris l'ID du storyboard. Qu'est-ce que c'est et comment puis-je l'utiliser?

enter image description here

J'ai commencé à chercher sur stackoverflow et je n'ai trouvé aucune explication à cela. J'ai supposé que ce n'est pas juste une étiquette stupide que je peux régler pour me souvenir de mon contrôleur, n'est-ce pas? Qu'est ce que ça fait?

108
RTB

L'ID du storyboard est un champ Chaîne que vous pouvez utiliser pour créer un nouveau ViewController basé sur ce ViewController. Un exemple d'utilisation serait de n'importe quel 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];
}

Cela créera un MyCustomViewController basé sur le storyCount Viewer que vous avez nommé "MyViewController" et le présentera au-dessus de votre contrôleur View actuel.

Et si vous êtes dans votre application délégué, vous pouvez utiliser

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)
}

Modifier pour Swift> = 3:

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

et

let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
129
Eric

Pour ajouter à la réponse d'Eric et la mettre à jour pour Xcode 8 et Swift 3:

Un ID de storyboard fait exactement ce que son nom implique: il l'identifie. Juste qu'il identifie un contrôleur de vue dans un fichier de scénario. C'est ainsi que le storyboard sait quel contrôleur de vue est lequel.

Maintenant, ne soyez pas confus par le nom. Un identifiant de storyboard n'identifie pas un "storyboard". Selon la documentation d'Apple, un story-board "représente les contrôleurs de vue pour tout ou partie de l'interface utilisateur de votre application". Ainsi, lorsque vous avez quelque chose comme l'image ci-dessous, vous avez un story-board appelé Main.storyboard qui a deux contrôleurs de vue, chacun pouvant se voir attribuer un identifiant de storyboard (son identifiant dans le story-board).

enter image description here

Vous pouvez utiliser l'ID de storyboard d'un contrôleur de vue pour instancier et renvoyer ce contrôleur de vue. Vous pouvez ensuite le manipuler et le présenter comme vous le souhaitez. Pour utiliser l'exemple d'Eric, disons que vous voulez présenter un contrôleur de vue avec l'identifiant 'MyViewController' lorsqu'un bouton est enfoncé. Pour ce faire, procédez comme suit:

@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)
}

Veuillez prendre note des modifications de syntaxe.

11
Taiwosam