(Résolu)[NSTreeController] Ajouter des enfants sans passer par addChild

septembre 2006 modifié dans API AppKit #1
Bonjour à  tous !

Voici une petite question que m' B) 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

Réponses

  • AliGatorAliGator Membre, Modérateur
    03:30 modifié #2
    Ben la fonction [tt]addChild:[/tt] ne te suffit pas ?
  • 03:30 modifié #3
    dans 1158241103:

    Ben la fonction [tt]addChild:[/tt] ne te suffit pas ?


    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.
  • AliGatorAliGator Membre, Modérateur
    03:30 modifié #4
    Ah ok.

    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... ;)
  • septembre 2006 modifié #5
    Merci AliGator :)

    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 :)
Connectez-vous ou Inscrivez-vous pour répondre.