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