NSArrayController, binding et multiple fenetre

shebsheb Membre
17:09 modifié dans API AppKit #1
Bonjour a tous,

Je rencontre un probleme pas simple a expliquer ...

J'ai :
- Un NSArrayController
- Une NSTableView avec des binding sur le NSArrayController
- Une fenetre d'edition de l'element selectionne dans la table view, qui contient des NSTextField qui ont eux des binding sur la clé selection du NSArrayController.

Jusque là  tout va bien, je selectionne la ligne 1 de ma table, dans la colonne 1 de cette ligne ya marqué "test" et dans ma fenetre d'edition j'ai bien "test" dans le NSTextField correspondant. Si je mets la valeur "toto" dans ce textfield et que je ferme la fenetre, c'est toujours marqué "test" dans ma table. Par contre, si avant de fermer la fenetre je change le focus sur un autre NSTextField ca mets bien à  jour la valeur dans ma table.

Je me relis et c'est franchement pas tres clair dit comme ca, si quelqu'un veut un exemple je lui envoie.

Je pense qu'il doit me manquer une notification ou un truc lié au KVO à  envoyer a la main mais je ne trouve pas ...

Réponses

  • CéroceCéroce Membre, Modérateur
    17:09 modifié #2
    A priori, c'est un problème de validation des données dans le text field.

    Inspecte ton NSTextField.
    Premier onglet, rubrique Text Field > Action : Est-ce bien réglé sur Sent On End Editing ?
  • shebsheb Membre
    17:09 modifié #3
    Bonjour,

    Merci pour la reponse.

    En effet j'en suis arrivé à  la meme conclusion, et mon NSTextField est bien réglé en "Sent on end editing". Mais quand je ferme la fenetre le text field garde le focus, et donc ne se valide pas.

    Je suis en train de reflechir à  un truc pour contourner ce probleme, mais ce n'est pas terrible et il y a surement une methode plus élégante avec cocoa :
    Dés que la fenetre se ferme, recupérer le NSTextField qui a le focus et le valider "à  la main".
  • CéroceCéroce Membre, Modérateur
    17:09 modifié #4
    J'y ai réfléchi, et en fait, c'est le comportement normal. Il n'y a pas de bogue dans ton programme.

    Ce que tu veux faire me semble la bonne technique; plus simplement, essaie simplement de valider le first responder. Je ne sais pas précisément comment on fait, mais jette un oe“il du côté de NSEditor.
  • shebsheb Membre
    17:09 modifié #5
    En fait j'ai trouvé la solution, je fait un
    <br />[window makeFirstResponder:nil]<br />
    


    et ca me valide mon NSTextField automatiquement

    Merci pour tout :)
Connectez-vous ou Inscrivez-vous pour répondre.