binding (débutant)

cbrandtcbrandt Membre
21:44 modifié dans API AppKit #1
salut à  tous
je commence avec les bindings (mieux vaut tard que jamais... :) ) pour les préférences et j'ai un soucis:

mes nstextfields modifiés avec une saisie au clavier sont bien enregistrés, mais pas quand c'est le click d'un bouton qui déclenche un setStringValue sur lesdits nstextfield... je suis sûr que j'ai raté un truc évident, mais quoi ?

Réponses

  • ClicCoolClicCool Membre
    janvier 2005 modifié #2
    Salut cbrandt :)

    Si tu envoies un setStringValue au textField, ce n'est pas un accesseur KVO et donc ne génère pas de réaction des "observers" comme le fait une édition via l'interface graphique suivi de son endEditing (ou qq chose comme ça).
    Y'a moyen de contourner le pb en forçant un endEditing mais j'ai pas le détail en tête.

    Ceci dit pourquoi faire un setStringValue sur un élément d'interface alor qu'un setMaVariable mettra à  jour TOUS les éléments d'interface bindés avec maVariable ?
  • cbrandtcbrandt Membre
    21:44 modifié #3
    le champ (non éditable) contient un chemin vers un fichier, et un click sur un bouton placé à  côté permet de choisir ledit fichier et donc ça remplit le champ.
    c'est un bout de code que j'utilise dans plusieurs autres projets (sans bindings), dans lequels le modèle (les prefs) était mises à  jour lors du click du bouton ok.
    en fait, je n'ai semble-t-il pas assez modifié mon source, je pensais que le setStringValue suffisait... j'avais déjà  essayé de forcer avec endEditing, mais ça ne marche pas, j'ai dû m'y prendre comme un âne.

    je vais donc suivre ton conseil de spécialiste et faire un appel au nsusershareddefaultstrucmachincontroller, et ça devrait aller mieux...

  • ClicCoolClicCool Membre
    21:44 modifié #4
    dans 1104962126:

    le champ (non éditable) contient un chemin vers un fichier, et un click sur un bouton placé à  côté permet de choisir ledit fichier ...


    Le bouton permet de choisir le fichier ?
    Il lance un dialogue de choix ?
    Peut-être y a-t-il moyen de binder le dialogue de choix sur le NSUserDefautsController ? (il est accessible à  partir de n'importequel nib)

    Si tu as une liste de chemin de fichier, peut-être peux tu les mettres dans un popUp ou des checkBoxes dont tu bind le selectedValue avec le NSUserDefautsController ... ?

    Bref, plûtot que de t'embêter avec le trucMachinControllerDaizinpo tu peux peut-être pousser plus loin les bindings sur les userDefaults ;)

    Sinon, bien sur, c'est pas sorcier le trucMachinControllerDaizinpo  ;)
  • cbrandtcbrandt Membre
    21:44 modifié #5
    le bouton appelle en fait un NSOpenPanel standard et une fois le choix du fichier (en fait, un dossier dans mon cas), au lieu d'appeler
    <br />[field setStringValue: path]; <br />
    

    j'utilise maintenant le trucMachinControllerDaizinpo:
    <br />[[[NSUserDefaultsController sharedUserDefaultsController] values] setValue: path forKey: @&quot;inputFolderPath&quot;];<br />
    


    et tout roule !

    [Fichier joint supprimé par l'administrateur]
Connectez-vous ou Inscrivez-vous pour répondre.