Quand utiliser Storyboard et quand utiliser les XIB

196

Existe-t-il des directives sur l'utilisation des story-boards dans un projet iOS et sur l'utilisation des XIB? quels sont les avantages et les inconvénients de chacun et quelles situations conviennent-ils chacun?

Autant que je puisse dire, ce n'est pas si propre d'utiliser des séquences de storyboard lorsque vous avez des contrôleurs de vue poussés par des éléments d'interface utilisateur dynamiques (comme les broches de la carte).

Affian
la source
4
Si vous voulez que votre application tourne également sur iOS4, vous n'avez pas le choix: vous ne pouvez pas utiliser le storyboard dans ce cas
AmineG
Un excellent exemple d'un AQ "incroyablement obsolète" sur SO !!
Fattie

Réponses:

174

J'ai beaucoup utilisé les XIB et réalisé deux projets à l'aide de Storyboards. Mes apprentissages sont:

  • Les storyboards sont agréables pour les applications avec un nombre d'écrans petit à moyen et une navigation relativement simple entre les vues.
  • Si vous avez beaucoup de vues et beaucoup de navigation croisée entre elles, la vue Storyboard devient confuse et trop de travail pour rester propre.
  • Pour un grand projet avec plusieurs développeurs, je n'utiliserais pas de Storyboards car vous avez un seul fichier pour votre interface utilisateur et ne pouvez pas facilement travailler en parallèle.
  • Il peut être utile que les grandes applications soient divisées en plusieurs fichiers de storyboard, mais je n'ai pas essayé cela. Cette réponse montre comment effectuer des séquences entre les story-boards.
  • Vous avez toujours besoin de XIB: dans mes deux projets Storyboard, j'ai dû utiliser des XIB pour des cellules de tableau personnalisées.

Je pense que les storyboards sont un pas dans la bonne direction pour la mise en œuvre de l'interface utilisateur et j'espère qu'Apple les étendra dans les futures versions d'iOS. Ils doivent cependant résoudre le problème du "fichier unique", sinon ils ne seront pas attrayants pour les grands projets.

Si je démarre une application de petite taille et que je ne peux offrir que la compatibilité iOS5, j'utiliserais des storyboards. Pour tous les autres cas, je m'en tiens aux XIB.

henning77
la source
37
Deux choses. 1) Vous pouvez créer des cellules de tableau personnalisées (elles les appellent cellules prototypes) dans les storyboards et 2) Vous pouvez utiliser plusieurs fichiers de storyboard. Voir ma réponse ici: stackoverflow.com/a/9610972/937822 pour plus de détails.
lnafziger
10
Merci. J'ai ajouté le lien à votre réponse. Quant aux cellules personnalisées: les cellules prototypes ne fonctionnaient pas pour moi car je dois réutiliser des cellules personnalisées sur plusieurs vues. J'ai donc dû revenir aux XIB.
henning77
2
La fusion des storyboards a été considérablement améliorée dans Xcode 5.x, car le balisage XML a été considérablement simplifié.
Scott Ahten
Je pense que tout dépend de la morphologie du projet (prototype?, Projet à grande échelle?, Déjà conçu ?, etc ...) Voici mes réflexions polarios.co/2014/08/04/storyboard-xibs-co
Ganzolo
1
"Si vous avez beaucoup de vues et beaucoup de navigation croisée entre elles, la vue Storyboard devient confuse et trop de travail pour rester propre" Je ne suis pas d'accord là-dessus, il vous suffit de trouver le bon flux pour le faire, vous pouvez éviter la plupart des séquences avec une conception appropriée.
Pablo A.
221

Mise à jour 1/12/2016 : c'est 2016 et je préfère toujours disposer mes interfaces utilisateur dans le code et non dans les storyboards. Cela étant dit, les storyboards ont parcouru un long chemin. J'ai supprimé tous les points de ce post qui ne s'appliquent tout simplement plus en 2016.

Mise à jour du 24/04/2015 : Fait intéressant, Apple n'utilise même pas de storyboards dans son ResearchKit récemment ouvert, comme Peter Steinberger l'a remarqué (sous la sous-rubrique "Interface Builder").

Mise à jour 6/10/2014 : comme prévu, Apple continue d'améliorer les storyboards et Xcode. Certains des points qui s'appliquaient à iOS 7 et inférieurs ne s'appliquent plus à iOS 8 (et sont désormais marqués comme tels). Donc, même si les story-boards ont toujours des défauts, je révise mes conseils de ne pas utiliser pour utiliser sélectivement là où cela a du sens .

Même maintenant que iOS 9 est sorti, je conseillerais contrefaire preuve de prudence lors de la décision d'utiliser des story-boards. Voici mes raisons:

  • Les storyboards échouent à l'exécution, pas au moment de la compilation : vous avez une faute de frappe dans un nom de séquence ou vous l'avez mal connecté dans votre storyboard? Il explosera au moment de l'exécution. Vous utilisez une sous-classe UIViewController personnalisée qui n'existe plus dans votre storyboard? Il explosera au moment de l'exécution. Si vous faites de telles choses dans le code, vous les rattraperez tôt, pendant la compilation. Mise à jour : Mon nouvel outil StoryboardLint résout principalement ce problème.

  • Les storyboards deviennent rapidement déroutants : à mesure que votre projet se développe, votre storyboard devient de plus en plus difficile à naviguer. De plus, si plusieurs contrôleurs de vue ont plusieurs séquences vers plusieurs autres contrôleurs de vue, votre storyboard commence rapidement à ressembler à un bol de spaghetti et vous vous retrouverez à zoomer et dézoomer et à faire défiler partout pour trouver le contrôleur de vue que vous recherchez pour et pour savoir ce qui segue indique où.Mise à jour : ce problème peut être résolu principalement en divisant votre Storyboard en plusieurs Storyboards, comme décrit dans cet article de Pilky et cet article de Robert Brown .

  • Les storyboards rendent le travail en équipe plus difficile : parce que vous n'avez généralement qu'un seul fichier de storyboard énorme pour votre projet, avoir plusieurs développeurs apportant régulièrement des modifications à ce fichier peut être un casse-tête: les modifications doivent être fusionnées et les conflits résolus. Lorsqu'un conflit se produit, il est difficile de dire comment le résoudre: Xcode génère le fichier XML de la table de montage séquentiel et il n'a pas vraiment été conçu dans le but qu'un humain doive lire, sans parler de le modifier.

  • Les storyboards rendent les révisions de code difficiles ou presque impossibles : les révisions de code par les pairs sont une bonne chose à faire pour votre équipe. Cependant, lorsque vous apportez des modifications à un storyboard, il est presque impossible de revoir ces modifications avec un développeur différent. Tout ce que vous pouvez tirer est un diff d'un énorme fichier XML. Décrypter ce qui a vraiment changé et si ces changements sont corrects ou s'ils ont cassé quelque chose est vraiment difficile.

  • Les storyboards entravent la réutilisation du code : dans mes projets iOS, je crée généralement une classe qui contient toutes les couleurs et polices et marges et encarts que j'utilise dans l'application pour lui donner une apparence cohérente: c'est un changement d'une ligne si je dois ajustez l'une de ces valeurs pour l'ensemble de l'application. Si vous définissez de telles valeurs dans le storyboard, vous les dupliquez et devrez rechercher chaque occurrence lorsque vous souhaitez les modifier. Il y a de fortes chances que vous en manquiez un, car il n'y a pas de recherche et de remplacement dans les storyboards.

  • Les storyboards nécessitent des changements de contexte constants : je me retrouve à travailler et à naviguer beaucoup plus rapidement dans le code que dans les storyboards. Lorsque votre application utilise des storyboards, vous changez constamment de contexte: "Oh, je veux un tap sur cette cellule de vue de table pour charger un contrôleur de vue différent. Je dois maintenant ouvrir le storyboard, trouver le bon contrôleur de vue, créer une nouvelle séquence à l'autre contrôleur de vue (que je dois également trouver), donnez un nom à la séquence, souvenez-vous de ce nom (je ne peux pas utiliser de constantes ou de variables dans les storyboards), revenez au code et j'espère que je ne sais pas mal le nom de qui enchaînent pour ma méthode prepareForSegue. Comment j'aimerais pouvoir taper ces 3 lignes de code ici où je suis! " Non, ce n'est pas amusant. Basculer entre le code et le storyboard (et entre le clavier et la souris) vieillit rapidement et vous ralentit.

  • Les storyboards sont difficiles à refactoriser : lorsque vous refactorisez votre code, vous devez vous assurer qu'il correspond toujours à ce que votre storyboard attend. Lorsque vous déplacez des éléments dans votre storyboard, vous ne découvrirez au moment de l'exécution que si cela fonctionne toujours avec votre code. J'ai l'impression que je dois synchroniser deux mondes. Il se sent fragile et décourage le changement à mon humble avis.

  • Les storyboards sont moins flexibles : dans le code, vous pouvez essentiellement faire tout ce que vous voulez! Avec les storyboards, vous êtes limité à un sous-ensemble de ce que vous pouvez faire en code. Surtout quand vous voulez faire des choses avancées avec des animations et des transitions, vous vous retrouverez à "combattre le storyboard" pour le faire fonctionner.

  • Les storyboards ne vous permettent pas de changer le type de contrôleurs de vue spéciaux : vous voulez changer un UITableViewControlleren un UICollectionViewController? Ou dans une plaine UIViewController? Pas possible dans un Storyboard. Vous devez supprimer l'ancien contrôleur de vue, en créer un nouveau et reconnecter tous les segments. Il est beaucoup plus facile d'effectuer un tel changement de code.

  • Les storyboards ajoutent deux responsabilités supplémentaires à votre projet : (1) L'outil Editeur de storyboard qui génère le XML du storyboard et (2) le composant d'exécution qui analyse le XML et crée des objets d'interface utilisateur et de contrôleur à partir de celui-ci. Les deux parties peuvent contenir des bogues que vous ne pouvez pas corriger.

  • Les storyboards ne vous permettent pas d'ajouter une sous-vue à unUIImageView : qui sait pourquoi.

  • Les storyboards ne vous permettent pas d'activer la disposition automatique pour des vues individuelles (-Contrôleur) : en cochant / décochant l'option Disposition automatique dans un storyboard, la modification est appliquée à TOUS les contrôleurs du storyboard. (Merci à Sava Mazăre pour ce point!)

  • Les storyboards ont un risque plus élevé de briser la compatibilité descendante : Xcode change parfois le format de fichier Storyboard et ne garantit en aucune façon que vous pourrez ouvrir les fichiers Storyboard que vous créez aujourd'hui dans quelques années, voire quelques mois. (Merci à thinkadvances pour ce point. Voir le commentaire original )

  • Les storyboards peuvent rendre votre code plus complexe : lorsque vous créez vos contrôleurs de vue en code, vous pouvez créer des initméthodes personnalisées , par exemple initWithCustomer:. De cette façon, vous pouvez rendre l' customerintérieur de votre contrôleur de vue immuable et vous assurer que ce contrôleur de vue ne peut pas être créé sans customerobjet. Cela n'est pas possible lors de l'utilisation de storyboards. Vous devrez attendre que la prepareForSegue:sender:méthode soit appelée, puis vous devrez définir la customerpropriété sur votre contrôleur de vue, ce qui signifie que vous devez rendre cette propriété modifiable et vous devrez autoriser la création du contrôleur de vue sans customerobjet . D'après mon expérience, cela peut considérablement compliquer votre code et rendre plus difficile de raisonner sur le flux de votre application. Mise à jour 9/9/16: Chris Dzombak a écrit un bon article sur ce problème .

  • C'est McDonald's : Pour le dire dans les mots de Steve Jobs à propos de Microsoft: C'est McDonald's (vidéo) !

Ce sont mes raisons pour lesquelles je n'aime vraiment pas travailler avec des storyboards. Certaines de ces raisons s'appliquent également aux XIB. Sur les projets basés sur le storyboard sur lesquels j'ai travaillé, ils m'ont coûté beaucoup plus de temps qu'ils n'en ont économisé et ils ont rendu les choses plus compliquées plutôt que plus faciles.

Lorsque je crée mon interface utilisateur et mon flux d'application dans du code, je contrôle beaucoup plus ce qui se passe, il est plus facile de déboguer, il est plus facile de repérer les erreurs dès le début, il est plus facile d'expliquer mes modifications aux autres développeurs et cela est plus facile à prendre en charge iPhone et iPad.

Cependant, je suis d'accord que la présentation de l' ensemble de votre interface utilisateur dans le code pourrait ne pas être une solution universelle pour chaque projet. Si l'interface utilisateur de votre iPad diffère considérablement de l'interface utilisateur de votre iPhone à certains endroits, il peut être judicieux de créer un XIB pour ces zones uniquement.

Un grand nombre des problèmes décrits ci-dessus pourraient être résolus par Apple et j'espère que c'est ce qu'ils feront.

Juste mes deux cents.

Mise à jour : dans Xcode 5, Apple a retiré l'option de créer un projet sans Storyboard. J'ai écrit un petit script qui porte les modèles de Xcode 4 (avec l'option de désactivation de Storyboard) sur Xcode 5: https://github.com/jfahrenkrug/Xcode4templates

Johannes Fahrenkrug
la source
45
Vous n'êtes pas fan des story-boards, hein? :)
logixologist
3
@logixologist Haha, non, pas vraiment. Après avoir travaillé sur des projets iOS avec et sans storyboards, je suis arrivé à la conclusion que je ne les aime vraiment pas :)
Johannes Fahrenkrug
4
@Rob Bien que cela puisse ressembler à ce que je pense, je ne le pense pas. Je peux imaginer de nombreuses façons dont la mise en page de l'interface utilisateur peut être faite d'une meilleure manière que de tout écrire à la main dans le code. Je pense que ma plus grande critique à propos des Storyboards est leur mise en œuvre plutôt que l'idée derrière eux. La plupart des points que je souligne pourraient être corrigés avec de meilleurs outils et une meilleure implémentation (un qui permet à un humain de suivre et de comprendre les changements, par exemple). Lorsqu'ils s'améliorent au point que les avantages l'emportent sur les inconvénients, je leur donnerais volontiers une autre chance et changerais mon opinion. Mais ce jour n'est pas aujourd'hui :)
Johannes Fahrenkrug
4
@Rob Oui, je ne me suis jamais plaint qu'ils soient lents. La fusion est devenue meilleure, mais si deux développeurs travaillent dans la même zone du storyboard, il est difficile, voire impossible, de résoudre les conflits de fusion: le Storyboard XML n'est tout simplement pas conçu pour être modifiable par l'homme. Vous avez tout à fait raison de dire qu'une "application simple avec disons 10 écrans" peut être faite plus rapidement avec les storyboards qu'en code, je ne le conteste pas. Cependant, très peu d'applications sont aussi simples ou restent aussi simples. Comme indiqué ci-dessus, à mon humble avis, vous perdez beaucoup de temps à utiliser les storyboards lorsque votre application grandit et devient plus complexe.
Johannes Fahrenkrug
4
J'ajouterais à cette liste que les fichiers Interface Builder sont moins pérennes. J'ai ouvert d'anciens fichiers .xib et .storyboard (ère iOS 5) dans un Xcode moderne (ère iOS 7) et tenté de mettre à jour son apparence. Les fichiers Interface Builder sont généralement cassés lors du déplacement entre les tailles d'écran et les versions iOS avec de grands changements visuels (ex. IOS 6 à 7). Ces mises à jour visuelles se seraient produites sans de nombreux artefacts étranges et des recréations de storyboard stupides si l'interface utilisateur avait simplement été créée en code.
Xander Dunn
17

Les storyboards ont été créés pour aider les développeurs à visualiser leur application et le flux de l'application. C'est beaucoup comme avoir un tas de xib mais dans un seul fichier.

Il y a une question similaire à celle-ci. Quelle est la différence entre un fichier .xib et un .storyboard? .

Vous pouvez également créer des transitions personnalisées via du code qui changera dynamiquement si nécessaire, un peu comme vous pouvez le faire avec .xibs.

AVANTAGES:

  • Vous pouvez simuler le flux d'une application sans écrire beaucoup, le cas échéant de code.
  • Il est beaucoup plus facile de voir vos transitions entre les écrans et le flux de votre application.
  • Peut également utiliser .xibs si nécessaire avec des storyboards.

LES INCONVÉNIENTS:

  • Fonctionne uniquement avec iOS 5+. Ne fonctionne pas avec iOS4.
  • Peut être encombré facilement si vous avez une application très intensive en vue.

Il n'y a vraiment pas de bon / mauvais moment pour utiliser l'un ou l'autre, c'est juste une question de préférence et quelles versions d'iOS vous souhaitez utiliser.

Bot
la source
Je connais la différence entre eux et comment ils fonctionnent. Je recherche des informations sur le moment d’utiliser l’un, l’autre ou le moment d’utiliser les deux.
Affian le
13

Je vais juste énoncer 4 raisons simples pour lesquelles vous devriez utiliser des storyboards, en particulier dans un environnement productif où vous devez travailler dans une équipe de propriétaires de produits, chefs de produit, concepteurs UX, etc.

  1. Apple a considérablement amélioré le travail avec les storyboards. Et ils vous encouragent à travailler avec eux. Ce qui signifie qu'ils ne casseront pas vos projets existants avec des mises à jour, ils garantiront que les storyboards sont à l'épreuve du temps pour les nouvelles versions XCode / iOS.
  2. Des résultats plus visibles en moins de temps pour les propriétaires de produits et les gestionnaires, même pendant la phase de création. Vous pouvez même utiliser le storyboard lui-même comme un diagramme de flux d'écran et en discuter lors des réunions.
  3. Même une fois qu'une application est terminée (et c'est généralement là que commence son cycle de vie) - à l'avenir, il sera plus rapide et plus facile d'appliquer de petits ajustements . Et ceux-ci pourraient très bien changer plusieurs aspects de votre mise en page en même temps, que vous souhaitez probablement voir de manière WYSIWYG. L'alternative serait d'écrire à la main les changements d'interface dans le code et de basculer entre l'IDE et le simulateur pour le tester, à chaque fois en attente de compilation et de construction.
  4. Les non-développeurs peuvent apprendre à configurer des dispositions dans les story-boards et à créer les crochets nécessaires pour les développeurs (IBOutlets et IBActions). C'est un très gros avantage car cela permet aux développeurs de se concentrer sur la logique et les concepteurs UX appliquent leurs modifications de manière visuelle, sans avoir à écrire de code du tout.

Je n'écrirai aucun CONS, car Johannes a déjà énuméré probablement tous les viables dans sa réponse. Et la plupart d'entre eux ne sont certainement pas viables, surtout pas avec les améliorations majeures de XCode6.

thgc
la source
5
un fan de story-boards, hein? :)
JohnPayne
5

Je ne pense pas qu'il y ait une bonne réponse à votre question, c'est juste une question d'expérience personnelle et avec quoi vous vous sentez plus à l'aise.

À mon avis, les storyboards sont une bonne chose. C'est vrai, il est vraiment difficile de savoir pourquoi votre application plante brusquement au moment de l'exécution, mais après un certain temps et de l'expérience, vous vous rendrez compte qu'il est toujours lié à un IBOutlet manquant quelque part et vous pourrez facilement le réparer.

Le seul vrai problème est de travailler en équipe sous contrôle de version avec des storyboards, dans les premiers stades de développement, cela pourrait être un vrai gâchis. Mais après cette première étape, les mises à jour de l'interface utilisateur qui modifient complètement le storyboard sont très rares, et dans la plupart des cas, vous vous retrouvez avec des conflits dans les toutes dernières parties du xml, qui sont des références de séquence qui se corrigent généralement automatiquement lorsque vous rouvrez le storyboard. . Dans notre travail d'équipe, nous avons préféré traiter cela plutôt que de lourds contrôleurs de vue avec des tonnes de code de vue.

J'ai lu de nombreux commentaires contre la mise en page automatique. Avec XCode5, il s'est vraiment amélioré, c'est vraiment bien même pour les mises en page à rotation automatique. Dans certains cas, vous devrez faire quelque chose dans le code, mais vous pouvez simplement supprimer la contrainte dont vous avez besoin pour modifier et, à ce stade, faire ce dont vous avez besoin dans votre code. Même les animer.

Je pense également que la plupart des gens qui n'aiment pas les storyboards n'ont pas complètement essayé de comprendre la puissance d'un enchaînement manuel personnalisé, où vous pouvez totalement personnaliser (dans un seul fichier) la façon dont vous passez d'une manière à une autre et aussi (avec quelques astuces), même réutiliser un contrôleur de vue précédemment chargé en mettant simplement à jour son contenu de vue au lieu de recharger complètement le tout. À la fin, vous pouvez vraiment faire les mêmes choses que dans le code, mais je pense que vous avez une meilleure séparation des problèmes avec les storyboards, mais je conviens que dans beaucoup de choses, ils manquent de fonctionnalités (polices, image comme fond de couleur, ecc ... ).

Stefano Mondino
la source
2
En fait, après avoir travaillé avec XCode et Storyboards, je peux seulement dire que c'est un cauchemar, et pour TOUS vous le défendant et en disant que c'est "une grande chose", je dis: Vous n'avez pas vu de grande chose jusqu'à présent (c'est comme une colline est une montagne pour ceux qui ne sont pas allés en montagne). Plus proche de la grandeur est ce qui est disponible dans Android; Les fichiers XML qui sont lisibles par l'homme avec l'éditeur visuel vous aident beaucoup, et ce n'est même pas une "grande chose", juste quelque chose que n'importe quel développeur normal s'attendrait comme base de fonctionnalités.
Lukasz 'Severiaan' Grela
Je suis totalement en désaccord avec vous, j'ai été développeur Android avant de passer à iOS, je choisirais toujours les storyboards plutôt que les mises en page XML. C'est une bonne chose pour de nombreux cas (pas TOUS les scénarios, mais fonctionne pour la plupart d'entre eux) et je le préfère à un tas de code dans les contrôleurs de vue qui est sûrement moins immédiat. Au final, c'est juste une question d'opinions et de scénarios.
Stefano Mondino
pourquoi diable dois-je utiliser un storyboard si j'utilise un routeur Angular UI?
Yvonne Aburrow
0

Je n'utilise pas StoryBoard ou XIB dans mon application .. mais je crée tout par programmation.

∆ Avantages:

√ Vous pouvez créer n'importe quel type complexe d'interface utilisateur ou d'animations de transition pour UIView.

√ Prend en charge toutes les versions iOS. Pas besoin de s'inquiéter pour <iOS 5.

√ * Votre application prend en charge tous les appareils iPhone / iPod / iPad dans votre code.

√ Vous êtes toujours à jour car vous connaissez le code qui fonctionnera toujours.

√ * Fonctionnera sur n'importe quel (nouveau) appareil lancé - Pas besoin de changer de code.

√ Tout vous appartient. À un certain endroit, vous voulez changer quelque chose - Pas besoin de regarder dans le storyboard ou xib. Il suffit de le rechercher dans une classe particulière.

√ Dernière mais pas la liste - Vous n'oublierez jamais cela, comment tout gérer par programme. C'est la meilleure chose car vous connaissez un contrôle très profond alors n'importe qui.

Je n'ai jamais trouvé de problème en n'utilisant pas SB ou XIB car je suis bon avec ça.

* si vous avez défini les cadres d'objets d'UIKit en fonction de la taille de l'écran.

PS Si vous n'avez toujours pas fait cette chose - vous pouvez rencontrer des difficultés (ou vous sentir ennuyeux) mais une fois que vous vous êtes familiarisé avec cela - c'est vraiment un bonbon pour vous.

Hemang
la source
Où peut-on trouver un modèle / exemple Swift pour une application de base «créer tout par programmation» iOS et OSX sans Storyboard ou XIB?
l --marc l
0

Si vous êtes sur le point de vous soucier des performances du Storyboard, regardez WWDC 2015 Session 407

entrez la description de l'image ici

Temps de construction

Lorsque le constructeur d'interface compile un storyboard, il fait deux choses d'abord, il essaie de maximiser les performances de votre application et, d'autre part, il minimise également le nombre de fichiers nib créés.

Si j'ai un contrôleur de vue avec une vue et un tas de sous-vues, le constructeur d'interface, le temps de construction va créer un fichier nib pour le contrôleur de vue et créer un fichier nib pour la vue.

En ayant des fichiers nib séparés pour le contrôleur de vue et la vue, cela signifie que la hiérarchie des vues peut être chargée à la demande.

Durée

Lorsque vous allouez une instance de storyboard à l'aide de l'API de storyboard UI, initialement, vous allouez uniquement de la mémoire pour l'instance de storyboard UI elle-même.

Aucun contrôleur de vue aucune vue pour le moment.

Lorsque vous instanciez votre contrôleur de vue initial, il chargera la plume pour ce contrôleur de vue initial mais, encore une fois, aucune hiérarchie de vues n'a été chargée jusqu'à ce que quelqu'un le demande.

onmyway133
la source
0

J'ai travaillé sur un projet de taille raisonnable (> 20 scènes dans le langage du storyboard), et j'ai rencontré de nombreuses limitations et je dois à plusieurs reprises consulter la documentation et les recherches Google pour faire des choses.

  1. L'interface utilisateur est tout dans un seul fichier. Même si vous créez plusieurs storyboards, vous avez toujours de nombreuses scènes / écrans dans chaque storyboard. C'est un problème dans les équipes moyennes à grandes.

  2. Deuxièmement, ils ne fonctionnent pas bien avec les contrôleurs de conteneurs personnalisés qui incorporent d'autres contrôleurs de conteneurs, etc. Nous utilisons MFSlideMenu dans une application à onglets et la scène a une table. C'est presque impossible à faire avec un storyboard. Après avoir passé des jours, j'ai eu recours à la méthode XIB où il y a un contrôle complet.

  3. L'IDE ne permet pas de sélectionner des contrôles en état de zoom arrière. Ainsi, dans un grand projet, le zoom arrière vise principalement à obtenir une vue de haut niveau et rien de plus.

J'utiliserais des storyboards pour des applications plus petites avec de petites équipes et j'utiliserais l'approche XIB pour des équipes / projets de moyenne à grande taille.

Krishna Vedula
la source
Ces trois points sont désormais totalement obsolètes (Dieu merci).
Fattie
0

Si vous souhaitez réutiliser une interface utilisateur dans plusieurs contrôleurs de vue, vous devez utiliser des XIB

Bibin Jaimon
la source