Les vues personnalisées avec Storyboard
Dans un complexe écrans (Vue Contrôleurs), j'ai utilisé pour séparer le tout en petits morceaux (je les appelle les widgets). Ces widgets sont constitués essentiellement d'un MyWidget.h
et un MyWidget.m
fichier ainsi qu'un MyWidget.xib
fichier, où l'élément racine est un UIView
et la MyWidget classe est le Propriétaire du Fichier de la UIView. Dans l'init de ce widget, je fais une loadNibNamed
.
De mon point de Vue Contrôleur je puis faire un [[MyWidget alloc] init]
, à laquelle je rajoute à la Vue du Contrôleur de la vue principale en tant que sous la vue. Cela, à ce jour, fonctionne parfaitement.
Je vais maintenant me demandais, comment faire la même chose avec storyboard, parce que je ne peut pas vraiment commencer à glisser dans un UIView
quelque part, j'ai toujours de commencer avec un UIViewController
, que je ne veux pas.
Si il n'est pas possible de faire ça avec un story-board, puis-je simplement le faire à l'ancienne, à l'aide de la table de montage séquentiel pour mes écrans principaux et les enchaîne, et utiliser un autre .xib fichier pour définir des vues personnalisées?
- Voulez-vous créer des
xib
s pour votre point de vue contrôleurs séparément et non pas dans le story-board? - Avez-vous trouvé une solution à cela?
- Je suis en utilisant un mélange de Storyboard et xib du. Storyboard pour les écrans principaux et xib avec seulement une UIView la racine de complexe de points de vue ou des widgets. Donc pas vraiment de réponse à ma question initiale (à l'aide de storyboard), mais, fondamentalement, à faire de même ce que j'ai fait avant déjà.
- ces jours-ci, il suffit d'utiliser un conteneur de vue, c'est vraiment aussi simple que cela .. stackoverflow.com/questions/23399061/...
Vous devez vous connecter pour publier un commentaire.
De mettre le widget et de la vue dans un document distinct .xib fichier fonctionne, et est approprié, surtout si vous voulez faire référence à cette même point de vue à partir de plusieurs Contrôleurs de Vue.
Cependant, parfois, vous ne voulez pas voir la vue supplémentaire/widget dans le même scénario, et il est possible. Voici comment faire:
Sélectionnez votre point de vue contrôleur au bureau de l'IB (cliquez sur la barre noire au-dessous de la vue), puis faites glisser une UIView à partir de la Bibliothèque d'Objet dans la barre noire:
Lorsqu'une vue est dans la barre noire, il est instancié comme n'importe quel autre point de vue de l'IB, mais n'est tout simplement pas ajouté à votre point de vue de la hiérarchie jusqu'à ce que vous le faites dans le code. Modifier l'affichage de la classe pour correspondre à votre propre sous-classe si nécessaire:
Vous pouvez le raccorder à votre vue-contrôleur comme vous le feriez pour brancher tout autre point de vue:
L'ajout de la visualisation s'affiche dans votre structure du Document et vous pouvez raccorder des actions et des références trop:
Maintenant, le problème qui demeure est que vous ne pouvez pas voir la vue peu importe combien de fois vous essayez de cliquer ou double cliquer, ce qui irait à l'encontre de l'objectif même de mettre dans le même scénario. Heureusement, il y a deux solutions que je connais.
La première solution consiste à faire glisser la vue à partir de la barre noire en arrière dans votre point de vue du contrôleur de la vue, de l'éditer, puis faites-le glisser de nouveau dans la barre noire une fois que vous avez terminé. C'est gênant, mais fiable.
L'autre solution est plus pointilleux, mais je le préfère parce qu'il me permet de voir tous mes points de vue en même temps:
Puis faites glisser un UITableViewCell dans la UITableView.
Une fois que vous avez votre point de vue qui apparaît comme par magie sur le côté, mais vous avez une UITableView que vous ne souhaitez pas. Vous pouvez redimensionner que 0x0, ou vous pouvez les supprimer et votre UIView sera (normalement) toujours rester visible.
La deuxième méthode fonctionne pour UIViews mais pas pour UIToolbars et il est impossible pour UIButtons, de sorte que la solution la plus propre que j'ai trouvé lorsque vous avez besoin de comprendre beaucoup de différents sous-vues est de fixer un seul secondaire UIView à votre vue-contrôleur comme un conteneur qui n'est jamais montré, mettez tous vos vues secondaires, et utiliser le UITableViewCell truc pour faire tout ce qui est visible. Je redimensionner mon mannequin UITableView à 0x0 pour le rendre invisible. Voici une capture d'écran de la façon dont il semble tout à fait comme ensemble:
self.view.frame
.Si vous êtes simplement à la recherche pour faire de votre point de vue contrôleurs ailleurs(et pas dans votre story-board), puis il y a une manière assez simple pour cela:
1) Créer votre
CustomViewController
s(abcdController
dans le code que j'ai essayé) avec leursxib
s comme d'habitude.2) Ajouter un
UIViewController
(ou ce qui était de la super-classe de votreCustomViewController
) pour le story-board.3) Définir les CustomClass à
CustomViewController
au lieu deUIViewController
comme indiqué ici:4) Enfin, dans votre
viewDidLoad
, la charge de la coutumexib
et vous avez terminé.loadNibNamed
dans ce cas... XOJe pense que vous pouvez faire quelque chose comme cela pour obtenir l'instance de spécifique viewcontroller de Storyboard et de l'utilisation de la vue sur le dessus de cela.
Espère que cette aide
Merci
Vijay