objective-c - Cocoa - 如何通过 NSMenuItem 的操作传递参数?

标签 objective-c cocoa

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

+ (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/

相关文章:

ios - 如何将相同的 UNNotificationContentExtension 与不同的 UNNotificationAction 一起使用?

objective-c - 在不知道名称的情况下打开现有的 Search Kit 框架搜索索引

objective-c - 子类中 BOOL 上的 "Subscripted value is neither array nor pointer"错误

ios - MKMapView。在移动中创建路径

cocoa - 核心图:注释位置

objective-c - 如何在 Objective-C 中更改鼠标光标

objective-c - Objective-C - 将 char[] 转换为十六进制格式的 NSString

ios - 如何在从 SlideMenuViewController 实例化的 ViewController 中打开 TabBarController

iphone - 奇怪的 GameKit 行为。还有其他人看到这个吗?

objective-c - 复选框状态问题