2013-04-19 1 views
1

Je joue actuellement avec l'exemple SourceView d'Apple.Comment obtenir un article spécifique dans un NSOutLineView?

Comme une tâche que je voulais changer le menu au bas de l'application dans un menu contextuel sur un clic droit. Maintenant, j'ai mis en place un NSMenuDelegate et en utilisant la méthode menuWillOpen pour faire mes ajustements dans le menu.

Le problème que je rencontre maintenant est que je ne peux pas obtenir des informations sur l'objet que j'ai cliqué à droite dans l'arbre.

J'ai obtenu l'index de l'article mais je ne peux pas obtenir l'article lui-même. Je l'ai essayé, mais cela ne me donne rien du tout

NSInteger *clickedRow = [myOutlineView clickedRow]; 

ChildNode *item = [myOutlineView itemAtRow:clickedRow]; 

J'espère que quelqu'un peut m'aider ici.

Merci.

Répondre

2

Comment déterminez-vous le clickedRow?
Une chose qui semble être incorrecte est que vous stockez le clickedRow dans un entier pointeur (NSInteger *) au lieu d'un entier.
Il est donc possible que itemAtRow: utilise une adresse arbitraire au lieu de l'index de ligne réel pour rechercher l'élément.
Une autre chose est que itemAtRow: renvoie un NSTreeControllerNode* et non un ChildNode* comme vous le supposez.
Vous devez utiliser

[[myOutlineView itemAtRow:clickedRow] representedObject]; 

au lieu

+0

- (NSInteger) clickedRow; vient nativement de NSTableView. Je l'ai juste stocké dans ma propre variable pour plus de commodité. – elementsense

Questions connexes