I am dynamically building menu's based on an array and there is a sub-menu is linked to an IBAction which opens a folder in Finder. The folder it opens is based on a property of the object in my initial array.
Is there a way of linked the NSMenuItem action to the IBAction and passing in this directory variable as I am dynamically creating this array?
OR should I be going into the IBAction and resolving the directory by referencing the NSMenuItem with against array?
e.g.
person = [[Person alloc] init];
// person is assigned
subMenu = [[NSMenu alloc] init];
[subMenu addItemWithTitle:@"Open folder" action:@selector(openDirectory:person.directory) keyEquivalent:@""];
This is what I was after.
NSMenuItem *menuItem;
menuItem = [subMenu addItemWithTitle:@"Open folder" action:@selector(openDirectory:person.directory) keyEquivalent:@""];
[menuItem setRepresentedObject:person];
Then in my IBAction i did something like this to extract the directory:
- (IBAction)openDirectory:sender {
Person *person = [sender representedObject];
NSLog(@"directory: %@",person.directory);
An action only takes a "(id) sender
" parameter, where the object that called the action is supposed to be sent.
But if your action method lives in some Objective C object (and not a singleton or whatever), you can easily reference that object's properties from your action.
Hopefully this is clear to you or if not, show a bit of your IBAction
code and tell us where it lives and how it's declared.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With