web-dev-qa-db-fra.com

Référence du storyboard dans Xcode, où devrions-nous l'utiliser?

Il y a un nouveau contrôle dans Xcode7 beta nommé en tant que Storyboard Reference. Ci-dessous, son image.

enter image description here

Il a sa description comme

Fournit un espace réservé pour un contrôleur de vue dans un storyboard externe. Les séquences connectées à cet espace réservé instancieront le contrôleur de vue référencé lors de l'exécution.

Donc les questions sont

  1. Dans quelles situations devrions-nous utiliser ceci?
  2. Est-ce utilisé pour connecter deux contrôleurs de vue de storyboard via segue?
  3. Cette approche est-elle utilisée pour remplacer VC d'un autre storyboard par programmation?)
  4. Est-ce que cela fonctionnera sur les anciennes versions d'iOS (avant iOS 9)?
63
Yogesh Suthar

PDATE (6 janvier 2016): Je veux juste mentionner rapidement que l'utilisation des références Storyboard est très simple et va aller vous aider à utiliser les Storyboards de manière beaucoup plus propre et facile à gérer. n bon exemple, c’est par exemple un UITabBarController avec plusieurs onglets. Créez simplement un Storyboard pour chaque onglet et dans votre Main.Storyboard lien vers ces Storyboards individuels utilisant des références de Storyboard. L'utilisation est très simple: après avoir créé une référence de Storyboard, il vous suffit de lui donner le nom de fichier du storyboard individuel vers lequel vous souhaitez créer un lien et définir le contrôleur de vue initial de ce storyboard individuel. C'est ça! :)

Ce qui suit est maintenant le réponse originale j'ai donné à la question de @ YogeshSuthar.

  1. cela peut être utilisé dans les cas où vous utilisez plusieurs story-boards dans votre application. jusqu'à présent, vous deviez instancier par programmation des contrôleurs de vue à partir d'autres story-boards. Il semble que vous puissiez simplement utiliser cette référence et créer votre séquence dans les story-boards, comme avec les contrôleurs de vue du même story-board.

  2. oui, vous connectez un contrôleur de vue de votre storyboard actuel avec un autre contrôleur de vue d'un storyboard différent et vous pouvez créer une transition entre ces deux

  3. oui, cela peut être utilisé pour remplacer le code utilisé auparavant pour instancier par programmation des contrôleurs de vue à partir d'autres storyboards

  4. [UPDATE thx to @AlexBasson] Les références de Storyboard peuvent être déployées sur iOS 8, OS X 10.1 et watchOS 1.

49
nburk

Utilisation de la référence du storyboard

Bien d'autres réponses sont correctes à mes questions.

Et je veux poster l'utilisation de la Storyboard Reference qui est utilisé pour ouvrir les contrôleurs Voir à partir d'un autre storyboard via segue sans écrire de code. :)

Pas

  1. Commencez par créer 1 nouveau storyboard, appelez-le comme vous le souhaitez (je l’ai nommé NewStoryboard).
  2. Placez votre contrôleur View (ou n’importe quel contrôleur View) dans NewStoryboard.
  3. Donnez-lui un Storyboard ID _ (J'ai donné newVC).

enter image description here

  1. Revenez à votre storyboard principal.
  2. Glisser déposer Storyboard Reference contrôle dans ce storyboard.
  3. Sélectionnez le Storyboard Reference contrôle et sélectionnez Attributes Inspector.
  4. Sélectionnez votre nouveau storyboard NewStoryboard.
  5. Indiquez l'ID de référence sous la forme newVC (que vous avez utilisé dans le storyboard NewStoryboard).
  6. Connectez ce Storyboard Reference par l'intermédiaire de ViewController. Maintenant, il va ouvrir ceci VC via segue sans écrire de code. :)

enter image description here

34
Yogesh Suthar
  1. Est-ce que cela fonctionnera sur les anciennes versions d'iOS (avant iOS 9)?

On dirait peut-être pas: /

Les références Storyboard nécessitaient une application ciblant au moins iOS 9.0, OS X 10.11 ou WatchKit 2.0 pour watchOS.

Source: WatchOS Developer Library: Ajout d’une référence à un autre storyboard

9
Ben
  1. Est-ce que cela fonctionnera sur les anciennes versions d'iOS (avant iOS 9)?

Voici une solution de contournement (vérifiée par Xcode 8 et iOS 8.2):

  1. Dans le contrôleur de vue de l'onglet, ajoutez une vue conteneur dont le cadre occupe la totalité de la vue (ajoutez des contraintes pour le faire si nécessaire).
  2. Supprimez le contrôleur de vue intégré qui a été ajouté automatiquement par la vue du conteneur.
  3. Créez votre référence de storyboard et faites glisser la séquence incorporée de la vue Conteneur vers cette référence.
  4. Si vous ne l'avez pas encore fait, créez le Storyboard et affectez-lui la référence au Storyboard.
  5. Dans le nouveau Storyboard, vous pouvez simuler l'apparence de la barre d'onglets en sélectionnant le premier contrôleur de vue et dans l'inspecteur d'attributs, sous Métriques simulées -> Barre inférieure, en sélectionnant une barre d'onglets à afficher (par exemple, translucide).

screenshot

4
Nianliang

Je viens de tester la référence du storyboard dans Xcode 7 avec iOS 8 et cela a échoué.

Illegal Configuration: Storyboard References cannot be the destinations of 
relationship segues prior to iOS 9.0
3
yangt

Sur la dernière bibliothèque de développeurs iOS , la documentation de versions Xcode est également ajoutée cette note ( Version actuelle: Xcode 7.2.1):

Les références Storyboard peuvent maintenant être déployées sur iOS 8, OS X 10.10 et watchOS 1.

Cela signifie de bonnes nouvelles, mais gardez toujours à l'esprit que:

Les références de storyboard ne peuvent pas être les destinations des segments de relation antérieurs à iOS 9.0

Donc, si vous êtes au courant de ces deux points, alors vous êtes prêt à partir :)

3
E-Riddie

Lorsque nous avons une grosse application avec trop d’écrans et de modules, diviser le storyboard en plusieurs storyboards selon les modules est une bonne option. Lorsque vous utilisez plusieurs story-boards, vous pouvez utiliser ce contrôle si vous devez connecter une transition entre les contrôleurs ViewControllers de différents story-boards. Si vous utilisez ce contrôle, inutile de coder des éléments tels que instantiateViewController et pushViewController, etc. Vous pouvez simplement connecter la séquence, effectuer la séquence et, si vous en avez besoin, utiliser prepareForSegue.

Discutons de toutes vos questions:

  1. Dans quelles situations devrions-nous utiliser ceci? - Je pense que vous avez trouvé votre réponse ci-dessus.

  2. Est-ce utilisé pour connecter deux contrôleurs de vue de storyboard via segue? - OUI

  3. Cette approche est-elle utilisée pour remplacer VC d’un autre storyboard par programmation? - rien à voir avec le codage lors de l’utilisation de ce contrôle

  4. Est-ce que cela fonctionnera sur les anciennes versions d'iOS (avant iOS 9)? - Cela peut marcher, je ne l'ai pas essayé

2
Nirav Gadhiya