> On 8 Apr 2016, at 10:32 PM, Graham Cox <[email protected]> wrote:
>
> Your controller might, and could effect the binding in code, using -[NSObject
> bind:toObject:withKeyPath:options:] and an outlet to the group view. As work
> goes, that’s pretty minimal, and affects only the controller, as it should.
I confess I’m unfamiliar with bindings, but I just tried an experiment. In the
test code, I added the following code to the class acting as a controller:
- (void) awakeFromNib
{
[mLabel bind:@"objectValue" toObject:mRadioGroup
withKeyPath:@"selectedIndex" options:nil];
}
Here, mLabel and mRadioGroup are outlets to a text field and the radio group
created earlier respectively. Because the -bind… method is declared on
NSObject, it is universal - the controller doesn’t need to import the
GCRadioGroupView header so it’s completely unaware of its implementation, other
than that it has a ’selectedIndex’ property. mLabel here represents the
“model”, though in fact it’s another view. If you want to bind in both
directions, you have to write two lines of code like this.
This works, the label displays the value of the selected index as expected when
the radio buttons are operated. Apart from this one line of code in the
controller, it’s all done in IB (hooking up two outlets and adding the radio
buttons to the group view). I’d call that about as good as you’re going to get
unless IB can be made to display the exposed bindings, which unfortunately
seems to be unsupported (why!!??).
If it bothers you that ‘selectedIndex’ is unique to this class, call it
whatever you want. It could be ‘selectedTag’ for all it matters, but since you
need to bind in code, it may as well be descriptive.
—Graham
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]