On May 3, 2013, at 1:29 AM, Gerriet M. Denkmann <gerr...@mdenkmann.de> wrote:
> I have a button which only makes sense when exactly one thing is selected.
> Currently it's Enabled property is bound to Array 
> Controller.selectedObjects.@count.
> I.e. the button is enabled if one or more things are selected.
> 
> But I want it to be disabled when nothing is selected AND also if more than 
> one thing is selected.
> Is there a way to do this without code?
> 
> If not - what to do ? Create a value transformer? Or what else?

I vaguely remember doing this by adding a readonly property to the array 
controller -- something like "exactlyOneIsSelected" -- with a corresponding 
getter method. Then you can bind to ArrayController.exactlyOneIsSelected.

Then the question would be how to trigger KVO on that property. I don't 
remember what I did. My first thought would be to implement +(NSSet 
*)keyPathsForValuesAffectingExactlyOneIsSelected, but I'm not sure what to 
return. Maybe @"selectionIndexes"? Would @"selectedObjects.@count" work? I 
don't know if you can use aggregation in keyPaths...Affecting... methods.

It might be useful to implement these methods on a category of 
NSArrayController if you need this logic in multiple places.

As usual I have a nagging feeling there's a better way, but this at least 
should work.

--Andy


_______________________________________________

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

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

Reply via email to