我正在以编程方式创建菜单:
+ (void)refreshStatusMenu {
for (NSDictionary *dict in kbMsgSet) {
NSString *msj = [dict objectForKey:@"msj"];
NSString *mid = [dict objectForKey:@"mid"]; // <- this would be http://www.blah.com
msg_item = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@"%@", msj] action:@selector(goToURL:mid:) keyEquivalent:@""];
[msg_item setTarget:[self class]];
[sm insertItem:msg_item atIndex:(i_msg)];
i_msg++;
//...
}
}
如何将参数传递给 @selector(goToURL:)
,以便在单击项目时我可以调用:
+ (void)goToURL:(id)obj {
NSLog(@"Open url:...%@", obj);
}
如果我尝试传递 @selector(goToURL:var2:)
,我会收到未捕获的异常错误。
最佳答案
一个 Action 方法不能有 2 个参数。应该只有一个,发件人,在本例中是菜单项。查看 this question 的答案用于将额外信息附加到菜单项并在操作方法中检索它的方法。
关于objective-c - Cocoa - 如何通过 NSMenuItem 的操作传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683379/