2009-08-08 6 views

Répondre

0

Vous devriez vraiment utiliser un NSColorWell au lieu de fabriquer vous-même le vôtre. Une des raisons pour lesquelles Apple a des interfaces graphiques supérieures à celles des autres plateformes (en particulier Linux) est que les développeurs utilisent les composants standard pour faire ce genre de chose. Des arguments comme «parce que je pense que cela rend l'interface plus concise» sont les raisons pour lesquelles GIMP est un exemple parfait de la façon de ne pas concevoir une interface graphique. Cela dit, ce que vous essayez de faire est de définir un menu dynamique, plutôt qu'une liste de taille fixe (comme on pourrait le faire dans InterfaceBuilder). Vous pouvez le faire via les classes NSMenu et NSMenuItem.

MenuList documentation guide

ce que vous devez faire, est au lieu d'afficher le menu sur demande, est le remplir lorsque l'application démarre avec le tableau par défaut. Ensuite, lorsque le tableau change (via les objets de votre modèle), la recréation du menu est déclenchée. Vous pouvez également intercepter le menu avec le menu menuNeedsUpdate: message.

+0

merci pour la réponse. tout le monde semble dédié à NSColorWell, alors qu'en réalité, il y a beaucoup de cas où ce n'est pas approprié. exemple: iCal. "obtenir des informations" sur un calendrier dans la liste des sources, et cliquez sur le menu de couleur sur la droite. c'est presque exactement ce que j'essaie de faire. vous pouvez remplir une interface avec les composants standard d'Apple, cela ne fait pas une bonne interface graphique. l'inverse est également vrai. merci de m'indiquer dans la bonne direction, cependant! –

0

Ne pas utiliser les liaisons, non. Vous pourriez faire le "Custom ..." un assez facilement, mais pas le séparateur. Pourquoi ne pas utiliser un NSColorWell, de toute façon?

+0

J'ai pensé à l'aide d'un colorwell, mais l'élément de menu qui fait vraiment l'interface plus concise. Ils auraient tous les deux le même effet d'ouvrir sharedColorPanel. Il me semble que ma meilleure solution est de reconstruire manuellement le menu chaque fois que mon tableau change de ma classe de vue. –

1

J'ai créé un PopUpButton similaire, mais je ne lie pas encore les couleurs par défaut à un tableau fixe (bien que je travaille sur ce point maintenant). il y a deux applications ici - les deux peuvent être considérées comme des hacks par les puristes, mais ils font le travail.

  1. et NSPopUpButtonCell le Sous-passer outre attachPopUpWithFrame d'ajouter vos propres éléments de menu. Je n'ai pas essayé ceci aux côtés des articles liés.

  2. Coder en dur l'objet 'Personnalisé' dans votre tableau et avoir l'action du panneau de couleur affiché, ajouter un nouvel élément au tableau.

Questions connexes