2009-10-19 9 views
2

Dans ma petite application de cacao, 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 jusqu'à présent: vous devez toujours laisser un champ de texte avant que NSObjectController ne mette à jour la classe avec l'entrée en cours.Cocoa-Bindings: Mettre à jour NSObjectController manuellement?

Cela devient un problème si l'utilisateur ne quitte pas un champ tex et clique immédiatement sur un bouton Enregistrer/Envoyer. La classe ne contient pas l'entrée en cours. Toujours une mauvaise chose.

Je cherche un moyen d'éviter cela. Comme dire à NSObjectController d'obtenir l'entrée courante même si l'utilisateur a quitté le champ. Si c'est possible, je pourrais mettre cette commande dans la save-Method avant de sauvegarder et tout irait bien.

Répondre

1

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

- (void)save:sender { 
    if (![self.myObjectController commitEditing]) { 
     // Handle error when object controller can't commit editing 
    } 

    // Other stuff 
} 
0

Si vous allez à la fixation du champ de texte value et cochez l'option « continue Mises à jour Valeur », qui provoquera la nouvelle valeur à régler sur l'objet de modèle à chaque fois que l'utilisateur le change , c'est à dire une fois pour chaque frappe. Cela garantirait que le modèle avait la valeur correcte avant de fermer la fenêtre, bien que cela puisse être un peu exagéré, selon les effets (le cas échéant) de la valeur définie dans votre modèle de données.