On Mar 24, 2009, at 3:54 AM, Michele Barboni wrote:


On Mar 19, 2009, at 10:11 AM, Michele Barboni wrote:

Hi,

I've a NSSegmentedControl, 7 segments (labeled with weekdays), which has selectedIndex bound through a value transformer (NO reverse transformation) to NSDates.
Now, one of my awakeFromNib do this:

[sedutaDays setTarget:self];
[sedutaDays setAction:@selector(setWeekDay:)];
[sedutaDays setContinuous:YES];

setWeekDay: essentially change the day of the NSDate which NSSegmentedControl is bound to, by accessing the NSArrayController, selectedObjects:, objectAtIndex:0, and so on..

The problem is that my setWeekDay: action is sent only if I click the selected segment (set by binding), clicking on any of other 6 segments results in an attempt to reverse transform the value, which obviously fail with "[NSCFNumber timeIntervalSinceReferenceDate]: unrecognized selector sent to instance 0x1019a40" since my value transformer doesn't reverse..

Any idea why it seems that only selected segments has setAction: ?


Passed two last days trying to understand why my NSSegmentedControl has this behavior but nothing came out.. I'm very disappointed..

It is not the behavior of the NSSegmentedControl, but bindings that you are not understanding. The binding is not trying to reverse transform , or you would get a different error message--assuming that your transformer is properly implemented, that is.

Refer to:
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/MessageFlow.html#/ /apple_ref/doc/uid/TP40002149-186285

If your transformer does not support reverse transformations, then your setter method must assume that it is receiving a transformed value--in this case, an NSNumber. Does it make this assumption?

Note that the segment control would have sent your action method if you didn't get the exception first. Selecting the currently selected segment works because you are not changing the bound value, which is precipitating the exception.

HTH,

Keary Suska
Esoteritech, Inc.
"Demystifying technology for your home or business"

_______________________________________________

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