Search code examples
cocoansmenuitemtarget-action

How do I set the sender on a NSMenuItem's action?


The Apple documentation says that the sender passed to the NSMenuItem's action can be set to some custom object, but I can't seem to figure out how to do this. Is there a method I'm not seeing someplace in the documentation?


Solution

  • I'm not sure what piece of documentation you're referring to (a link would help).

    You can use the -setRepresentedObject: method of NSMenuItem to associate an arbitrary object with a menu item:

    //assume "item" is an NSMenuItem object:
    
    NSString* someObj = @"Some Arbitrary Object";
    
    [item setRepresentedObject:someObj];
    [item setAction:@selector(doSomething:)];
    

    Then when the menu item sends its action message you can obtain the object:

    - (IBAction)doSomething:(id)sender
    {
        NSLog(@"The menu item's object is %@",[sender representedObject]);
    }