Le fait de placer le widget / la vue dans un fichier .xib séparé fonctionne, et est particulièrement approprié si vous souhaitez référencer cette même vue à partir de plusieurs contrôleurs de vue.
Cependant, vous souhaitez parfois voir la vue / widget supplémentaire dans le même storyboard, et c'est possible. Voici comment procéder:
Sélectionnez votre contrôleur de vue dans IB (cliquez sur la barre noire sous la vue), puis faites glisser un UIView de la bibliothèque d'objets dans la barre noire:
Lorsqu'une vue est dans la barre noire, elle est instanciée comme n'importe quelle autre vue dans IB, mais n'est tout simplement pas ajoutée à votre hiérarchie de vues tant que vous ne le faites pas dans le code. Modifiez la classe de la vue pour qu'elle corresponde à votre propre sous-classe si nécessaire:
Vous pouvez le connecter à votre contrôleur de vue comme vous le feriez avec n'importe quelle autre vue:
La vue ajoutée apparaît dans la structure de votre document et vous pouvez également y connecter des actions et des références:
Maintenant, le problème qui persiste est que vous ne pouvez pas réellement voir la vue, quel que soit le nombre de fois que vous essayez de cliquer ou de double-cliquer, ce qui irait à l'encontre de l'objectif de la placer dans le même storyboard. Heureusement, je connais deux solutions de contournement.
La première solution de contournement consiste à faire glisser la vue de la barre noire vers la vue de votre contrôleur de vue, à la modifier, puis à la faire glisser dans la barre noire une fois que vous avez terminé. C'est gênant mais fiable.
L'autre solution de contournement est plus délicate, mais je la préfère car elle me permet de voir toutes mes vues en même temps:
Faites glisser un UITableView de la bibliothèque d'objets dans votre vue nouvellement ajoutée.
Faites ensuite glisser un UITableViewCell dans ce UITableView.
Une fois que vous faites cela, votre vue apparaît comme par magie sur le côté, mais vous avez un UITableView que vous ne voulez pas. Vous pouvez soit le redimensionner à 0x0, soit le supprimer et votre UIView restera (généralement) toujours visible.
Parfois, la vue secondaire sera à nouveau masquée dans IB. Vous pouvez répéter les étapes ci-dessus si vous avez supprimé l'UITableView, ou si l'UITableView est toujours dans la hiérarchie, il vous suffit de cliquer sur UITableViewCell et la vue réapparaîtra.
La deuxième méthode fonctionne pour UIViews mais pas très bien pour UIToolbars et est impossible pour UIButtons, donc la solution la plus propre que j'ai trouvée lorsque vous avez besoin d'inclure beaucoup de sous-vues différentes consiste à attacher un seul UIView secondaire à votre contrôleur de vue en tant que conteneur qui ne s'affiche jamais, mettez toutes vos vues secondaires là-dedans et utilisez l'astuce UITableViewCell pour rendre tout visible. Je redimensionne mon UITableView factice à 0x0 pour le rendre invisible. Voici une capture d'écran de tout cela:
xib
s pour vos contrôleurs de vue séparément et non dans le story-board?