繁体   English   中英

Cocoa - 如何使用NSMenuItem的动作传递参数?

[英]Cocoa - How to pass a parameter with NSMenuItem's action?

我正在以编程方式创建菜单:

+ (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:)我会收到未捕获的异常错误。

动作方法不能有2个参数。 应该只有一个发件人,在这种情况下,它将是菜单项。 有关将额外信息附加到菜单项并在操作方法中检索它的方法,请参阅此问题的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM