2010-05-31 3 views
1

J'ai une configuration avec un objet (OTNodeDatum) (OT pour OutlineTest) pour être l'objet représenté dans NSTreeNode. NSTreeNode est la classe affichée dans la page des attributs de NSTreeController.addChild, etc. en utilisant NSTreeController et NSTreeNode (Snow Leopard)

J'ai l'application basée sur le document, pas de données de base. Sur MyDocument init, je configure le contenu avec un NSMutableArray contenant un élément, un NSTreeNode avec un objet représenté qui contient une seule propriété (oui, name).

bouton Ajouter, le bouton Ajouter enfant, le bouton Supprimer, accroché par le constructeur d'interface à l'NSTreeController ajouter l'action, etc.

Il fonctionne jusqu'à un certain point.

Lorsque j'effectue un ajout, j'obtiens une nouvelle ligne vide que je peux modifier, mais le texte inséré disparaît lorsque je quitte la cellule.

Lorsque j'effectue une suppression, les éléments sont supprimés.

Lorsque j'ajoute un enfant, rien ne se passe.

Je pense que je dois sous-classer soit NSTreeNode, ou NSTreeController pour obtenir le bon comportement en termes d'ajout d'enfants et en ajoutant un nouvel objet représenté en plus d'ajouter un nouveau nœud d'arbre.

Est-ce que c'est sur la bonne voie? Si je sous-classe NSTreeController, devrais-je remplacer l'add, addChild, pour que la bonne chose arrive? Et que pouvais-je gâcher? Je n'arrive pas à trouver de conseils à ce sujet, même si j'ai passé beaucoup de temps à chercher.

Merci.

John V

Répondre

2

Il semble que la bonne façon de faire les choses, ou du moins, une certaine manière, est d'utiliser

-(void)insertObject:(id)object atArrangedOjectIndexPath:(int)index; 

d'abord créer representedObject, créez un nouveau NSTreeNode avec cet objet représenté, puis insérez-le. Plus de travail que simplement connecter le bouton ajouter au contrôleur d'arbre, mais (espérons-le) les avantages de l'utilisation NSTreeNode compenser pour cela.