Binding & Browser

septembre 2004 modifié dans API AppKit #1
Bonjour tout le monde,

voici ma petite interrogation: j'ai fait un binding entre une NSBrowser et une propriétés de type NSString de ma classe C (via l'option value de mon ObjectController).

Cela fonctionne  mais pas comme je le voudrais  ;) Mon NSBrowser est composé de 2 colonnes et je souhaite que la valeur de ma variable soit modifier seulement si la sélection est faite sur la colonne 2 de ma NSBrowser.

Je pensais passer par les méthodes de validation (validate<Key>:error:) mais cela implique que dans ma classe C, je dois avoir un lien avec la NSBrowser (style un outlet) :(  Et franchement je ne veux pas de cette solution car ma classe C en question est une classe modele et je n'ai pas envie de faire de couplage.

Réponses

  • ClicCoolClicCool Membre
    10:12 modifié #2
    dans 1095247599:

    un binding entre une NSOutlieView et une propriétés de type NSString


    Salut deftones_chrix :)

    J'vois mal la structure de ton OutlineView ?

    Ceci dit je suis pas sûr de pouvoir te proposer mieux que ce que tu cherches justement à  éviter  :-\
    Les bindings sur les OutlineView sont très peu compliants, ils n'ont pas la souplesses de ceux des TableView :(
  • septembre 2004 modifié #3
    dans 1095254026:

    J'vois mal la structure de ton OutlineView ?


    Je ne sais pas pourquoi mais je me doutais de ne pas avoir été super clair :)
    En fait, j'ai 2 colonnes:

    • la première définie des groupes d'aliments (i.e Féculents,Légumes,Viandes)
    • la deuxième permet de m'afficher les aliments appartenant au groupe sélectionné


    Mon binding se fait donc sur une variable qui stocke le nom de l'aliment (Haricots verts,pâtes,poulet,etc) et je l'ai lié à  la propriété Value de mon NSBrowser. Dans la pratique je voudrais que ma variable soit seulement modifiée lorsque je clique sur un élement de la 2ième colonne. Et pour l'instant, elle se met à  jour à  chaque click (ce qui fait que lors d'un click sur l'élément Féculents présent dans la colonne 1, le terme Féculents sera affecté à  ma variable) :(

    dans 1095254026:

    Ceci dit je suis pas sûr de pouvoir te proposer mieux que ce que tu cherches justement à  éviter  :-\
    Les bindings sur les OutlineView sont très peu compliants, ils n'ont pas la souplesses de ceux des TableView :(


    Je vais chercher pour voir s'il n'y pas moyen d'utiliser les notifications.... Néanmoins, dés que j'ai un truc fiable et relativement élégant, je le décris dans ce topic  O0
  • 10:12 modifié #4
    :'(   AAARRRGGGGGG je suis un gros mauvais !!!!!!!!!!!!!!!!!!!!!
    Vous pouvez tous me baffez (mais pas trop fort tout de même  ;D )

    En fait, j'ai mis NSOutlineView alors que cela concernait les browsers.
    La confusion devait venir du fait que j'ai pas mal bouffé de NSOutlineView il y a quelques temps.

    Encore désolé et je peux comprendre que ma question ne semblait pas claire  :-\
    Je vais modifier mon texte pour que cela soit plus compréhensible :)
    Et encore, toutes mes excuses sur cette confusion  o:)
  • 10:12 modifié #5
    Me r'vlou et je suis sur une piste  :)

    Pour éviter de devoir "pervertir" ma classe model, je pense que la solution est de faire une sous classe de NSBrowser (MyBrowser) qui définit sa propre méthode doClick.
    Après je me tâte, soit je fais une notification qui m'informera du click. Notification interceptée par ma classe controleur de la fenetre qui mettra à  jour si besoin le champ de ma valeur. Soit je déclare dans ma classe MyBrowser une variable d'instance qui sera un outlet affecté à  mon champ.
    Vous serez plus quoi ?
Connectez-vous ou Inscrivez-vous pour répondre.