2 votes

Cocoa-Bindings : Mettre à jour NSObjectController manuellement?

Dans mon application cocoa, j'ai lié les propriétés d'une classe à certains champs de texte à l'aide d'un NSObjectController. Le seul problème que j'ai rencontré jusqu'à présent : il faut toujours quitter un champ de texte avant que l'NSObjectController mette à jour la classe avec la saisie actuelle.

Cela pose un problème si l'utilisateur ne quitte pas un champ de texte et clique directement sur un bouton Enregistrer/Soumettre. La classe ne contient pas la saisie actuelle. Toujours une mauvaise chose.

Je cherche un moyen d'éviter cela. Comme dire à NSObjectController de récupérer la saisie actuelle même si l'utilisateur a quitté le champ. Si c'est possible, je pourrais mettre cette commande dans la méthode d'enregistrement avant de sauvegarder et tout irait bien.

1voto

Nathan Campos Points 8216

Jetez un œil à cette question : Pouvez-vous mettre en œuvre manuellement les liaisons Cocoa ?, j'espère que cela vous aidera.

1voto

Alex Points 19842

Envoyez un message commitEditing à votre contrôleur dans le gestionnaire du bouton OK. Cela fera ce que vous demandez. C'est aussi simple que :

- (void)save:sender {
    if (![self.myObjectController commitEditing]) {
        // Gérer l'erreur lorsque le contrôleur d'objet ne peut pas valider les modifications
    }

    // Autre chose
}

0voto

Brian Webster Points 7516

Si vous allez à la liaison de valeur du champ texte et cochez l'option "Mise à jour continue de la valeur", cela entraînera la nouvelle valeur à être définie sur l'objet du modèle à chaque fois que l'utilisateur la modifie, c'est-à-dire une fois pour chaque frappe. Cela garantirait que le modèle ait la valeur correcte avant de fermer la fenêtre, bien que cela puisse être un peu exagéré, en fonction des effets (le cas échéant) de la valeur étant définie dans votre modèle de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X