• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Binding NSMenuItem 1 to 1
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • Follow-Ups:
    • Re: Binding NSMenuItem 1 to 1
      • From: Jeff Johnson <email@hidden>
References: 
 >Re: Binding NSMenuItem 1 to 1 (From: Knut Lorenzen <email@hidden>)

  • Prev by Date: Re: Binding NSMenuItem 1 to 1
  • Next by Date: Re: Binding NSMenuItem 1 to 1
  • Previous by thread: Re: Binding NSMenuItem 1 to 1
  • Next by thread: Re: Binding NSMenuItem 1 to 1
  • Index(es):
    • Date
    • Thread