(Résolu)[NSTreeController] Ajouter des enfants sans passer par addChild
deftones_chrix
Membre
Bonjour à tous !
Voici une petite question que m' depuis quelques temps.
Comment ajouter un objet enfant à un objet présent dans le NSTreeController ?
J'ai bien le "addObject:" qui m'ajoute des objets racines mais quid d'un "addChildObject:" ? Car j'ai tenté d'ajouter l'objet enfant directement à l'objet mais la outlineview rattachée au NSTreeController ne se met pas à jour
Quelqu'un connaitrait-il l'astuce ? :adios!:
Merci d'avance
Voici une petite question que m' depuis quelques temps.
Comment ajouter un objet enfant à un objet présent dans le NSTreeController ?
J'ai bien le "addObject:" qui m'ajoute des objets racines mais quid d'un "addChildObject:" ? Car j'ai tenté d'ajouter l'objet enfant directement à l'objet mais la outlineview rattachée au NSTreeController ne se met pas à jour
Quelqu'un connaitrait-il l'astuce ? :adios!:
Merci d'avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pas dans mon cas. addChild ajoute un nouvel élément à l'élément sélectionné.
Or dans mon cas, je veux ajouter un objet précis comme enfant d'un autre précis également.
En clair, il me faudrait une fonction permettant de donner au NSTreeController, l'objet à ajouter. Or avec addchild, tu lui passe le "sender" et non l'objet à ajouter.
Je ne suis pas super calé en bindings, mais à la limite tu pourrais presque récupérer le selectionIndexPaths courant, puis sélectionner ton objet à modifier, faire un addChild, et termienr avec un setSelectionIndexPaths pour remettre la selection comme avant.
Mais bon à mon avis c'est loin d'être propre et ça va appeler beaucoup de méthodes du KVO pour rien donc à mon avis c'est bof.
Une autre solution (tout aussi barbare ??) serait de récupérer le "content" de ton TreeController, lui ajouter son enfant avec la méthode idoà¯ne, puis faire un setContent derrière avec le nouveau contenu.
Quoique là encore je doute que ce soit très propre.
Mais j'ai gardé ce qui me semble être bon pour la fin :P : [tt]insertObject:atArrangedObjectIndexPath:[/tt] doit te permettre d'insérer ton objet à l'endroit voulu. Il te faudra calculer le indexPath adéquat pour placer ton objet correctement, mais ça me semble être ce que tu recherches sinon. Et puis le calcul de l'index path ne va pas être bien compliqué donc c'est pas la mort, loin de là , donc...
J'avais essayé le insertObject... mais cela ajoutait un objet entre 2 et non un fils.
Hier soir, j'ai enfin trouvé le truc... il fait utiliser le binding "contentArray" et là c'est ok. Par contre , passer par le content (via setContent) ne me donnait par le résultat escompté. J'ai encore quelques trucs à apprendre sur les bindings