2009-11-13 4 views
0

J'ai réussi à obtenir mon moi confus ... J'ai un View Controller assez complexe dont une grande partie est développée par programmation. Je voudrais faire apparaître un "dialogue" sur le contrôleur de vue à un moment donné et je voudrais "concevoir" cette vue dans Interface Builder parce que c'est assez simple (fond UIImageView, certains UILabels et un UIButton). J'ai créé le .xib et je suis en train de sous-classer UIView avec les IBOutlets, etc. J'essaye maintenant de le câbler et sachant que j'ai probablement besoin d'ajouter une méthode initWithNibName: alors cela instanciera correctement ... alors je réalise que je ne fais qu'un autre UIViewController et je ne pense pas que nous sommes supposés avoir des vues UIViewController w/dans d'autres vues UIViewController?!?Vue de conception dans Interface Builder pour charger paresseusement dans UIViewController

Alors maintenant, je repense à la façon de s'y prendre "correctement". Quelle est la meilleure façon d'utiliser IB pour concevoir une vue 1/4 écran simple qui apparaîtra sur une vue principale?

Répondre

1

Appelez le +[NSBundle loadNibNamed:owner:] pour charger le fichier NIB qui contient votre vue. Si vous spécifiez votre contrôleur de vue (c'est-à-dire, self) en tant que propriétaire, toutes les connexions que vous apportez au propriétaire du fichier dans le fichier NIB seront alors effectuées sur le contrôleur de vue. Ainsi, vous pouvez déclarer une prise à votre vue personnalisée dans le contrôleur de vue et après l'appel

[NSBundle loadNibNamed:@"MyView" owner:self]; 

la variable de sortie pointera vers l'objet de la vue. Vous pouvez également utiliser -[NSBundle loadNibNamed:owner:options:], qui renvoie un tableau des objets de niveau supérieur dans la NIB.

+0

OK. essayer avec * [[NSBundle mainBundle] loadNibNamed: @ "DialogView" propriétaire: self options: nil]; * mais en obtenant l'erreur que "cette classe n'est pas une valeur clé codage-conforme pour la clé nameLabel". nameLabel est le nom de l'UILabel IBOutlet que j'ai câblé dans IB pour tester ceci ... – Meltemi

+0

Donc, il essaie de câbler ces éléments avec des propriétés dans le ViewController où j'appelle loadNibNamed: owner: options: from. Mais ces propriétés ne sont pas dans le VC, elles sont dans une DialogView qui est une sous-classe de UIView. mon VC a une propriété pour dialogView. Je suppose que je voudrais que ce LoadNibNamed pour câbler des choses à un à un chemin clé de mon View Controller? Je pense que je deviens plus confus!?! – Meltemi

+2

Le message d'erreur suggère que vous n'avez pas défini correctement la classe de l'objet que vous connectez nameLabel dans IB. Avez-vous défini le propriétaire du fichier DialogView.xib dans IB à la classe de votre contrôleur de vue? La classe de l'affichage personnalisé est-elle DialogView dans IB? –