Re: Binding NSMenuItem 1 to 1
Re: Binding NSMenuItem 1 to 1
- Subject: Re: Binding NSMenuItem 1 to 1
- From: mmalc crawford <email@hidden>
- Date: Tue, 21 Aug 2007 09:54:44 -0700
On Aug 21, 2007, at 8:50 AM, Knut Lorenzen wrote:
Jeff Johnson (email@hidden) schrieb dereinst (am
21.08.2007 1:30 Uhr):
I believe that you can get the desired effect by setting your enabled
binding's Multiple Values Placeholder to YES.
(Should be No as communicated by private mail)
You can also set the No Selection Placeholder to NO. You probably
don't need the "@count" keypath; you can probably just use the Value
Transformer "NSIsNotNil".
Got it working now. Here is the trick:
- Model Key Path must *not* be @count, using an arbitrary Key works
- Value Transformer set to NSIsNotNil
- Multiple Values Placeholder set to No
This seems convoluted and fragile -- what happens if the selected
object has no value for 'arbitraryKey'? What happens if your model
changes -- will you remember that that binding was dependent on
'arbitraryKey'?
It would be more robust and expressive to bind to, say, the array
controller' selectionIndexes (which is KVO compliant and provides
exactly the information you require) and determine whether the count
of the selected indexes is 1 using a value transformer...
mmalc
static NSNumber *yes, *no;
@implementation OneSelectedTransformer : NSValueTransformer
+ (void)initialize
{
if (self == [OneSelectedTransformer class])
{
yes = [[NSNumber alloc] initWithBool:YES];
no = [[NSNumber alloc] initWithBool:NO];
}
}
+ (Class)transformedValueClass
{
return [NSNumber class];
}
- (id)transformedValue:(id)value
{
NSIndexSet *selectionIndexes = value;
if ([selectionIndexes count] == 1)
{
return yes;
}
return no;
}
@end
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden