Look for "Cocoa Bindings Guide" in the docs. It would be nice if it were 
cross-referenced in every class description. SelectedIndex should work for a 
segmented control. Haven't tried it myself though.

Cheers,
Dave

On 2010-01-10, at 10:58 PM, Jerry Krinock wrote:

> After studying some about bindings during the last week, I decided that, just 
> for fun, I would bind an NSSegmentedControl to its window controller using a 
> binding instead of target/action.  I thought that selectedSegment might be a 
> KVO-compliant property of NSSegmentedControl because it has a 
> -selectedSegment and -setSelectedSegment: method.
> 
> So I exposed a binding named @"foo" in my window controller's +initialize, in 
> -awakeFromNib I added this:
> 
>  [windowController bind:@"foo"
>                toObject:segmentedControl
>             withKeyPath:@"selectedSegment"
>                options:0] ;
> 
> and finally in a "windowWillClose" cleanup method I added an unbind:.
> 
> The above code compiled and ran without any bitchin' from out of the console, 
> and at any time in the program if I send -infoForBinding:@"foo" to 
> windowController, I log the expected result:
> 
> bindingInfo = {
>    NSObservedKeyPath = selectedSegment;
>    NSObservedObject = <NSSegmentedControl: 0x1b879c90>;
>    NSOptions =     {
>        NSMultipleValuesPlaceholder = <null>;
>        NSNoSelectionPlaceholder = <null>;
>        NSNotApplicablePlaceholder = <null>;
>        NSNullPlaceholder = <null>;
>        NSRaisesForNotApplicableKeys = 1;
>        NSValueTransformer = <null>;
>        NSValueTransformerName = <null>;
>    };
> }
> 
> But it "just didn't work".  Flipping that segmented control in the user 
> interface never caused my window controller's -setFoo: to run.
> 
> Did I do anything wrong?
> 
> If not, I conclude that NSSegmentedControl's is not KVO-compliant for 
> property 'selectedSegment'.  That is, the class implementation probably 
> changes the view without invoking the setter.
> 
> I changed to target/action and it works fine.
> 
> So how does one know whether a property in Cocoa class is KVO-compliant?  I 
> can't find an answer in the Key-Value Observing Programming Guide.  I thought 
> maybe there's a little point system:
> 
> 1.  Property has a setter and getter; i.e. -bar and -setBar:.  Add 2 points.
> 2.  I remember seeing, every now and then, in newer API documentation, a 
> notation that this "property is observeable", or something like that.  Add 8 
> points.
> 3.  Add 1 point for each Mac OS X dot release that the class first appeared 
> in.  0 points for 10.0, 1 point for 10.1, etc.
> 4.  If the class is a "view layer" class, subtract 2 points.  Most people 
> don't usually bind to view classes.
> 5.  Test it and see if it works.  Add 5 points.  What is the possibility that 
> it could stop working in a future Mac OS X release?
> 
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> 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:
> http://lists.apple.com/mailman/options/cocoa-dev/dave.fernandes%40utoronto.ca
> 
> This email sent to dave.fernan...@utoronto.ca

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to