dans Xcode 3.1.2 Je chargeais la pointe du NSCollectionViewItem
dans ma sous-classe de NSCollectionViewItem
comme ceci:NSCollectionView à 10,6/Xcode 3.2
-(id)copyWithZone:(NSZone *)zone
{
id result = [super copyWithZone:zone];
[NSBundle loadNibNamed:@"PersonView" owner:result];
return result;
}
Dans Xcode 3.2 sous 10.6 la même méthode ne donne pas à une erreur, mais il ne charge pas la vue dans le NSCollectionView
non plus.
Y at-il autre chose à faire pour que la vue apparaisse? Ou y a-t-il même une meilleure façon de faire cela qui vient avec le changement de la superclasse de NSCollectionItem
à NSViewController
? Après tout, l'annulation de copyWithZone
pour obtenir cette fonctionnalité standard m'a toujours semblé un hack. Je pense qu'on devrait pouvoir spécifier la plume qui est censée être utilisée dans IB, mais il semble que Apple ne le pense pas.
J'ai regardé l'exemple qui est disponible dans la documentation, mais le NSCollectionViewItem
est instancié par programmation en utilisant initWithNibName
, mais je voudrais le créer dans l'IB.
MISE À JOUR:
Je l'ai fait ce que kperryua suggéré, mais maintenant je ne peux pas accéder à sorties du NSCollectionViewItem
. Voici ce que je suis en train de faire:
- (void)setRepresentedObject:(id)object {
if (object) {
[labelName setValue:[object name]];
}
}
Je binded le nom de l'étiquette au propriétaire du fichier qui est mon NSCollectionViewItem
. Cela fonctionnait parfaitement dans 10.5, mais maintenant la sortie n'est pas assignée (j'ai vérifié cela avec GDB).
image showing the bindings http://img21.imageshack.us/img21/671/picya.png
MISE À JOUR 2:
J'ai aussi binded itemPrototype
du NSCollectionView
à ma sous-classe de NSCollectionViewItem
(PersonController).
image showing bindings http://img503.imageshack.us/img503/4672/pic2d.png
Maintenant, à la fois la File's Owner
du PersonView.nib
et itemPrototype
du point NSCollectionView
à ma sous-classe.
image showing console output http://img340.imageshack.us/img340/6184/pic3.png
Comme vous pouvez le voir dans la capture d'écran l'élément sont affichés, mais le texte de l'étiquette ne peut être modifiée que la sortie labelName
est pas accessible.
J'ai également enregistré le nom que j'essaie de définir pour m'assurer qu'il ne s'agit pas de 'Name'.
Que faut-il faire pour changer la valeur de l'étiquette?
Toute aide serait appréciée.
Merci. Il apparaît maintenant, mais je ne peux pas accéder aux prises auxquelles j'ai lié le FileOwner de la plume qui contient la vue de l'objet. Dois-je faire différemment maintenant? –
Je ne suis pas sûr de ce que vous voulez dire. Peux-tu élaborer? – kperryua
J'ai édité ma réponse pour vous montrer ce que je veux dire. –