8

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

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

4

1 回答 1

7

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

于 2012-10-02T01:58:34.250 回答