2010-04-24 20 views
1

Je travaille avec un NSOutlineView qui a deux colonnes. Mon dataSource fournit la vue en plan avec une arborescence d'éléments d'une classe personnalisée qui représente les types de fichiers (c'est-à-dire que vous l'initialisez avec une UTI). La première colonne est le nom d'affichage du type de fichier (par exemple, "Code source", "Document NIB Interface Builder", etc.). La deuxième colonne est un NSPopUpButtonCell qui est censé permettre à l'utilisateur de choisir un gestionnaire pour le type de document donné (pensez au volet de préférences "Types de fichiers" de Xcode, et vous y êtes à peu près).Menu NSPopUpButtonCell dynamiquement peuplé dans un NSOutlineView

Je peux générer un NSMenu pour un élément donné dans l'arborescence, rempli d'options basées sur les entrées de la base de données des services de lancement pour l'UTI, avec l'icône de l'application appropriée, et ainsi de suite. En fait, le menu lui-même fonctionne à merveille, peuplé de NSPopUpButtonCellWillPopUpNotification. Le problème est, essaye comme je pourrais, la cellule quand le menu n'est pas surgi contient toujours exactement une de deux choses: soit une chaîne vide, ou le texte par défaut pour la cellule, le premier si le résultat de -handlerName sur l'élément (l'attribut affecté à la colonne) est non nil, le dernier autrement.

En outre, j'appelle manuellement -selectItem: sur l'instance NSPopUpButtonCell, qui semble juste incorrect. En revanche, la colonne de gauche, qui est juste un NSTextFieldCell, tout fonctionne (bien que accordée, tout ce qu'il faut faire est de lire la valeur de l'élément et de le présenter). (Je suis relativement nouveau sur Cocoa UI, je connais Objective-C, et beaucoup d'autres langages de programmation, mais je n'ai pas beaucoup d'expérience dans la création d'interfaces utilisateur Mac OS X, alors soyez gentils).

Répondre

1

Comme je suis aussi en train de me battre avec outlineViews et popUpButtons, j'aimerais bien connaître la réponse à cette question et bien d'autres encore. Je crains que je ne peux pas vraiment vous aider, mais une chose ai attrapé mon oeil:

Je peux générer un NSMenu pour un élément donné dans l'arbre

Au cours des dernières semaines tortueuses, J'ai appris une chose: lorsque vous travaillez avec un NSTreeController et une source de données, fournissez toujours NSTreeNodes en définissant votre objet réel (NSMenu dans ce cas) comme representatedObject.