2010-09-07 6 views
0

Je suis en train de créer une application à deux vues, contrôleur unique comme suit: J'ai deux XIB. Chacun avec le même propriétaire du fichier.Multiple XIBs même propriétaire de fichier

En tant que test, j'ai placé un UILabel sur chaque XIB. J'ai connecté le propriétaire du fichier à UILabel dans chaque XIB. La propriété de sortie est la même.

Quand j'instancier la pointe en utilisant loadNibNamed J'ai également mis le 'propriétaire' à l'instance du propriétaire du fichier, par exemple:

nib=[[NSBundle mainBundle] loadNibNamed:@"ONE" owner:OWNER options:nil]; 
nib=[[NSBundle mainBundle] loadNibNamed:@"TWO" owner:OWNER options:nil]; 

Maintenant, au propriétaire, si je l'appelle

[myLabel setText:@"Hello World"]; 

I voir la mise à jour de l'étiquette uniquement dans nib TWO.

Si je crée des UILabels supplémentaires propres à chaque NIB, je peux les mettre à jour et les afficher correctement. Il semble que je ne peux avoir qu'une connexion de la propriété sur le propriétaire du fichier à chaque NIB.

Des idées?

Répondre

0

Ce que vous voulez est un IBOutletCollection. Cela vous permet d'assigner une propriété à plus d'un élément de plume et de parler du groupe entier en une seule fois.

+0

Ça a l'air bien mais c'est seulement 4.0. Je suis vraiment surpris par la nature MVC d'Interface Builder que cela n'a pas été facilement réalisable d'une autre manière. Merci pour les commentaires cependant! – Cliff

0

Un objet IBOutlet ne peut pointer que sur un objet. Vous aurez besoin de deux des IBOutlets que vous voulez utiliser.

0

Ceci est très vieux et pas très vu, mais je ne peux pas m'empêcher de remarquer pourquoi cela ne fonctionne pas. Vous passez dans la même instance du propriétaire. Créez deux instances du propriétaire du fichier et vous pouvez avoir deux valeurs d'étiquettes différentes. Il n'y a aucune raison que vous ne puissiez pas affecter tous vos points de vente dans l'ensemble de votre projet à une classe d'objets en fait, bien que vous ne voudriez probablement pas le faire. Une autre chose à penser est de savoir si vous ne devriez pas utiliser l'héritage ici, en faisant une super-classe, reliant tous les points de vente communs à cette classe et ensuite une sous-classe avec des points de vente uniques. En effet, puisque vous devrez soit distinguer vos plumes en les appelant par l'identificateur de plume ou par la classe qui leur est associée, je pense qu'il est préférable d'associer des classes séparées et d'utiliser l'héritage pour couvrir le chevauchement entre elles.

Questions connexes