Qu'est-ce qu'un identifiant StoryBoard et comment puis-je l'utiliser?
110
Je suis nouveau dans le développement d'IOS et j'ai récemment commencé dans Xcode 4.5. J'ai vu pour chaque viewController que je pouvais définir certaines variables d'identité, y compris l'ID du storyboard. Qu'est-ce que c'est et comment puis-je l'utiliser?
J'ai commencé à chercher sur stackoverflow et je n'ai trouvé aucune explication. J'ai supposé que ce n'était pas juste une étiquette stupide que je pouvais définir pour me souvenir de mon contrôleur, n'est-ce pas? Qu'est ce que ça fait?
L'ID de storyboard est un champ String que vous pouvez utiliser pour créer un nouveau ViewController basé sur ce ViewController de storyboard. 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 storyboard ViewController que vous avez nommé "MyViewController" et le présentera au-dessus de votre View Controller actuel
Et si vous êtes dans votre délégué d'application, vous pouvez utiliser
Essayons ça, et comment obtenez-vous leself.storyboard
RTB
self.storyboard est accessible à partir de n'importe quel contrôleur de vue. Je vais modifier ma réponse maintenant pour que vous puissiez voir
Eric
Et si nécessaire pour y accéder depuis mon AppDelegate ou toute autre classe?
RTB
Ajout d'une autre modification montrant comment accéder au storyboard à partir de n'importe quel fichier.
Eric
1
self.storyboardest accessible à partir de n'importe quel contrôleur de vue chargé à partir d'un storyboard. Si le contrôleur de vue n'a pas été chargé à partir d'un storyboard, cette propriété est nulle.
rob mayoff
13
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 identifie. Juste qu'il identifie un contrôleur de vue dans un fichier de storyboard. C'est ainsi que le storyboard sait quel contrôleur de vue est quel.
Maintenant, ne soyez pas confus par le nom. Un ID de storyboard n'identifie pas un «storyboard». Un storyboard, selon la documentation d'Apple, «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 storyboard appelé Main.storyboard qui a deux contrôleurs de vue, chacun d'entre eux pouvant recevoir un ID de storyboard (leur ID dans le storyboard).
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 souhaitez présenter un contrôleur de vue avec l'identifiant 'MyViewController' lorsqu'un bouton est enfoncé, vous le feriez de cette façon:
@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)}
L'icône d'avertissement jaune indique que cela est dû au fait que le deuxième contrôleur de vue n'a pas de point d'entrée et / ou d'ID. Cela peut être résolu en lui donnant un ID de storyboard ou en le connectant à un autre contrôleur de vue dans le storyboard. De cette façon, le storyboard sait comment l'atteindre et l'identifier.
Taiwosam
Je n'ai pas pu trouver le champ ID du Storyboard, donc merci pour la photo. Il est dans la même position sur Xcode 9.
self.storyboard
self.storyboard
est accessible à partir de n'importe quel contrôleur de vue chargé à partir d'un storyboard. Si le contrôleur de vue n'a pas été chargé à partir d'un storyboard, cette propriété est nulle.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 identifie. Juste qu'il identifie un contrôleur de vue dans un fichier de storyboard. C'est ainsi que le storyboard sait quel contrôleur de vue est quel.
Maintenant, ne soyez pas confus par le nom. Un ID de storyboard n'identifie pas un «storyboard». Un storyboard, selon la documentation d'Apple, «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 storyboard appelé Main.storyboard qui a deux contrôleurs de vue, chacun d'entre eux pouvant recevoir un ID de storyboard (leur ID dans le storyboard).
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 souhaitez présenter un contrôleur de vue avec l'identifiant 'MyViewController' lorsqu'un bouton est enfoncé, vous le feriez de cette façon:
Veuillez prendre note des changements de syntaxe.
la source