[iOS] Multiple Storyboards
jeudi 12 mars 2015Dans un storyboard, il est possible de créer l’entièreté de son application avec toutes ces vues controllers dans un seul ou plusieurs storyboard
Voici un exemple de création de plusieurs storyboard pour une application.
1. Dans le main storyboard on design notre vue de départ2. New File > StoryBoard
3. On a un storyBoard vierge
4. on ajoute un viewcontroller dans le storyboard
5. Pour ajouter un navigation controler on sélectionne notre
viewcontroller et on clique ensuite dans Editor > Embed In > Navigation Controller
6. dans le storyboard ne jamais oublié de flagé la checkbox Is initial Controller sur le viewcontroller principale par ou commence le storyboard par exemple ici on fait ca dans le navigationcontroller.
Une fois checké on retrouve la flèche qui se dirige vers le viewcontroller principale.
7. On créé ensuite un viewcontroller File en swift.
8. Ensuite dans le storyboard qui contient notre viewController on change la classe du viewcontroller en mettant le nom de la classe du fichier viewcontroller qu’on a créé.
9. Voila notre deuxième storyboard celui de destination est près. Il faut maintenant dans le premier storyboard, le root storyboard dans ce cas-ci ajouter une référence vers le storyboard de destination.
10. Dans la liste des composants (Object Library), on recherche le type storyboard reference et on l’ajoute dans le root storyboard. On y inclut le nom du storyboard de destination dans le champs storyboard.
11. Il faut aussi ensuite ajouter un segue vers cette référence storyboard en faisant ctrl+drag du bouton du root storyboard vers le storyboard reference.
12. Il est aussi possible de faire en programmation le lien vers un autre storyboard sans utiliser le storyboard reference.
13. Dans la méthode action d’un bouton du root storyboard on fait
let storyboard = UIStoryboard(name:"name", bundle: nil) let controller = storyboard.instantiateViewController(withIdentifier:"name") as! UINavigationViewController self.present(controller, animated:true, completion:nil)
Pour retirer la vue controller
self dismissViewControllerAnimated:<#(BOOL)#> completion:<#^(void)completion#>
Pas oublié de mettre un identifier (storyboardId) dans le navigationController du storyboard.
Il est aussi possible dans un storyboard qui devient trop volumineux de sélectionner les viewcontrollers et de faire Editors > Refractor to storyboard. Il créé alors un storyboard avec vos viewcontrollers et dans le premier storyboard il aura convertit en storyboard reference.
Pour les popover ou vue modal privilégier de tout faire en storyboard et ensuite d’utiliser les segue via ctrl drag d’un composant bouton ou d’une vue controller si composant créer par programmation vers le controller qui affichera la vue.
Ensuite il y a des paramètres à spécifier dans le segue pour le mode d’affichage et aussi définir un identifier.
Ensuite pour lancer la vue, on fait un performsegue avec id uniquement si le composant est créé par programmation avec selector par exemple
Et on peut faire une fonction override prepareForSegue pour passer des paramètres à notre vue controller de destination !