Combo Box dans une Table View [Résolu]

décembre 2012 modifié dans API AppKit #1
Bonjour à  tous les chocolatiers .



Ma nouvelle version d'Electro Suite avance à  grands pas. Je souhaiterai, dans le module d'association des composants passifs; ajouter une combobox dans la case de la Table View pour les multiples.Or, si je sais les utiliser hors table (avec une liste d'item établie à  la construction ou bien ajoutée par code dans le programme), je n'ai pas la moindre idée de la façon de faire dans une Table View. J'utilise , pour gérer les Table View, un NSArrayController qui gère une collection d'objets. Dans ce contexte, comment fixer les items de la combobox et comment récupérer la sélection ?



Je ne recherche pas forcément une solution clé-en-main mais au moins un début de piste car je ne sais pas ou commencer



Merci d'avance

Réponses

  • CéroceCéroce Membre, Modérateur
    Ce n'est pas très simple.

    En gros, un deuxième NSArrayController alimenterait la combo box. Il serait donc bindé sur la clef selection du premier NSArrayController.



    Pourrions-nous savoir ce que tu cherches à  faire ? Les combo box dans une table ne sont pas très "Mac" dans l'esprit, il y a peut-être une alternative plus simple et plus habituelle.
  • Bonjour,



    Il faut utiliser le NSComboBoxCell, pour tout contrôles dans une TableView tout est dérivée de la classe NSCell.



    Pour un exemple, voir ici http://cocoadev.com/wiki/NSComboBoxCellExample
  • CéroceCéroce Membre, Modérateur
    Depuis 10.7, on peut utiliser une NSView pour définir les cellules. Je ne sais pas ce qui est le plus simple dans ce cas. On doit pouvoir binder une NSComboBoxCell.
  • En fait, ce que je compte faire, et il faut alors se reporter au module d'association de composants passifs de ma première version d'Electro Suite, c'est de permettre de choisir dans la table le multiple , il y a une case prévue pour ça. Ce que j'avais fait, c'était la possibilité de saisir une lettre qui sera ensuite interprétée, vue que les caractères utillisés pour les unités d'électronique sont difficilement accessibles au clavier (oméga majuscule et mu minuscule) et je pense qu'une combo box contenant déjà  les unités sera plus pratique, il n'y aura qu'à  choisir dans la liste. Et cette liste devra évoluer en fonction du composant choisi.



    Je pense à  une autre solution qui serait de mettre des check-boxes (et ça je sais faire) pour chaque unité (par exemple une pour Ohms, une pour kilo-ohms et une pour megohms dans le cas des résistances et micro, nano et pico farads pour les condensateurs) ...
  • CéroceCéroce Membre, Modérateur
    La combo box parait effectivement plus appropriée. Ce ne serait pas plus simple à  implémenter avec des check boxes, au contraire même.
  • Bon, et bien j'ai réussi à  implémenter ma combobox dans la Table View ! C'est en fait enfantin ! Il faut partir du principe que la combo box est "indépendante" de la source de donnée (le ArrayController dans mon cas) et qu'elle sert à  placer une valeur dans la case en question, qui elle sera liée à  l'Array Controller. J'ai donc mis une outlet de la combobox (de type NSComboBoxCell) dans le fichier .h de la vue, ce qui me permet de la charger en items par code, comme une combobox classique (addItemWithObjectValue). Puis, quand je sélectionne pendant l'exécution l'item qui m'intéresse, je me retrouve avec la propriété de l'objet (qui est une instance de la classe-modèle de l'ArrayController) qui prend alors la valeur sélectionnée. Il me reste alors à  implémenter le code dans la méthode d'accès de la propriété pour utiliser et interpréter la saisie (ici, pour convertir les appellations de multiples et sous-multiples en puissances de 10).



    Et ça marche comme sur des roulettes !
Connectez-vous ou Inscrivez-vous pour répondre.