Répondre

2

Sheehan Alam,

Si vous créez un nouveau projet dans Xcode TabBar vous pouvez voir comment un NIB externe est chargé à partir d'un objet existant dans IB.

Tab Bar Controller http://img.skitch.com/20100329-c2533dqft4q584424926fxfidb.preview.jpg

Vous pouvez spécifier un NIB pour une viewController utilisant IB via (Commande-1)

First View Controller Attributes http://img.skitch.com/20100329-p83bgd8qyieb5h3dg27beinkj3.preview.jpg
+1

Lorsque j'ajoute un UIViewController à mon projet, il occupe toute la vue. Y a-t-il un moyen de l'afficher en dessous d'autres éléments que je montre à l'écran? Par exemple, en dessous d'un UILabel que j'ai positionné? –

1

Chaque NIB a un propriétaire, qui est généralement le contrôleur de la vue principale de ce NIB. Vous pouvez créer une instance de votre contrôleur de vue assez facilement dans Interface Builder. Faites simplement glisser un objet contrôleur de vue et définissez la propriété NIB de manière appropriée.

Le problème est que vous n'avez aucun moyen d'adresser la vue de ce contrôleur depuis Interface Builder. Vous devrez écrire du code pour ajouter la vue du contrôleur de vue intégrée en tant que sous-vue de la vue du contrôleur de vue principale. La façon dont vous effectuez cette opération est spécifique à votre application, mais il devrait suffire d'avoir une prise dans le contrôleur de vue principale qui fait référence au contrôleur de vue intégré.

Ensuite, dans l'implémentation viewDidLoad du contrôleur de vue principale, vous ajoutez le view du contrôleur de vue intégré en tant que sous-vue du view du contrôleur de vue maître. Vous devrez probablement ajuster le cadre de la vue incorporée pour l'adapter correctement.

+0

Je ne peux pas faire glisser un UIViewController dans mon XIB. Lorsque j'ajoute un UIView, je n'ai pas la possibilité de spécifier un nom NIB. –

1

approche de Alex devrait fonctionner, mais si je comprends bien vous préférez plutôt une façon sans avoir pour programmer [self.view addSubview:embeddedView] dans la méthode -viewDidLoad du contrôleur de vue principale.

J'ai écrit comment nous embed custom-view Nibs inside other Nibs dans un blog longish. Le point de repère surcharge -awakeAfterUsingCoder: dans votre vue personnalisée, en remplaçant l'objet chargé de la plume «maître» par celui chargé à partir de la plume «intégrée».

Notez que notre coutume contrôle sous-classe UIView, non UIViewController (voir Apple's docs on Custom view controllers: « Vous ne devriez pas utiliser plusieurs contrôleurs de vue personnalisée pour gérer les différentes parties de la même hiérarchie de vue. »)

Questions connexes