TalkingCode
TalkingCode

Reputation: 13557

Cocoa-Bindings : Update NSObjectController manually?

In my little cocoa application I have bound the properties of a class to some text fields with help of a NSObjectController. The only problem I have so far: you always have to leave a text field before the NSObjectController updates the class with the current input.

This becomes a problem if the user doesn't leave a texfield and clicks on a Save/Submit Button right away. The class doesn't contain the current input. Always a bad thing.

I am looking for a way to avoid this. Like telling the NSObjectController to get the current input even if the user had exited the field. If this is possible I could put this command in the save-Method before saving and all would be fine.

Upvotes: 2

Views: 1226

Answers (2)

Brian Webster
Brian Webster

Reputation: 12045

If you go to the text field's value binding and check the "Continuously Updates Value" option, that will cause the new value to be set on the model object each time the user changes it, i.e. once for each keystroke. That would ensure that the model had the correct value before closing the window, though it may be a bit overkill, depending on what the effects (if any) are of the value being set in your data model.

Upvotes: 0

Alex
Alex

Reputation: 26859

Send a commitEditing message to your controller in the handler for the OK button. This will do what you're asking for. It's as simple as:

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

    // Other stuff
}

Upvotes: 1

Related Questions