Question

I ai une vue principale d'une unité de commande associée. J'ai quelques barres d'outils assez compliquées que je dois passer dans et hors fonction de l'interaction de l'utilisateur.

Pour garder les choses simples, je gère les barres d'outils avec mon contrôleur principal de vue, plutôt que d'avoir toutes sortes de dépendances entremêlées ou des chaînes de délégués vraiment profondes.

De toute façon, comment puis-je avoir plusieurs vues dans un xib et les initialiser correctement? Comme si je veux afficher un de mes vues personnalisées dans le centre de l'écran, comment pourrais-je faire?

Par ailleurs, si je sépare les vues en plusieurs xibs, comment puis-je les référencer le même objet contrôleur pour leurs IBOutlets / IBActions?

Était-ce utile?

La solution

  

De toute façon, comment puis-je avoir plusieurs vues   dans une XIB et les initialiser   correctement? Comme si je veux afficher   un de mes vues personnalisées dans le centre   de l'écran, comment pourrais-je faire?

Vous pouvez avoir autant de UIViews que vous voulez dans votre xib. Habituellement, vous allez faire une vue « primaire » - celui qui est relié à la propriété vue du propriétaire du fichier (à savoir votre contrôleur de vue) - et le reste peut s'asseoir dans le xib au même niveau. Vous pouvez les brancher à d'autres propriétés dans le contrôleur de vue aussi bien.

Vous pouvez faire ces vues comme subviews pour la vue principale. (Peu, c'est beaucoup de vue). Disons que vous avez deux points de vue, et FooView BarView. Vous voulez FooView d'être présent au démarrage. Donc, vous venez de définir BarView à cacher dans IB. Ensuite, votre contrôleur de vue pourrait ressembler à ceci:

@interface MyViewController : UIViewController
{
    FooView* fooView;
    BarView* barView;
    ...
}
...
@property (nonatomic, retain) IBOutlet FooView* fooView;
@property (nonatomic, retain) IBOutlet BarView* barView;
...

Ensuite, à l'intérieur de votre code, lorsque vous voulez changer de vue, il suffit d'utiliser la méthode setHidden: pour cacher un et montrer l'autre.

  

Par ailleurs, si je sépare les vues   en plusieurs xibs, comment puis-je   les référencent le même contrôleur   objet pour leurs IBOutlets / IBActions?

Vous pouvez avoir d'autres xibs partageant le même contrôleur de vue. Je l'ai fait moi-même beaucoup. Il suffit de définir le propriétaire du fichier à la classe appropriée.

Autres conseils

Il est en fait très simple. Vous venez de créer une nouvelle vue au niveau de la racine dans votre fichier et créez un XIB IBOutlet pour ce point de vue dans votre contrôleur principal de la vue.

En ce qui concerne que des vues de chargement directement à partir XIB au catalogue de, partageant le même contrôleur de vue, c'est un peu plus bâclée .. vous auriez essentiellement besoin de boucle à travers les éléments du fichier XIB et de trouver l'élément que vous recherchez.

Une chose à noter de cette approche est que tous les vues initialisées lorsque l'une des vues sont nécessaires.

Si votre point de vue sont simples cela pourrait ne pas d'importance, mais si vous avez des vues complexes, cela pourrait rendre votre application lente à charger.

Si les vues sont assez complexes, vous devez les diviser en différents fichiers .xib. Dans ce cas, la UIViewController mère aurait IBOutlets aux autres sous-classes UIViewController plutôt que IBOutlets à UIViews. Les contrôleurs de vue se chargera automatiquement le chargement paresseux de leurs vues respectives.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top