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).