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 つのパラメーターを指定することはできません。送信者は 1 つだけである必要があり、この場合はメニュー項目になります。メニュー項目に追加情報を添付してアクション メソッドで取得する方法については、この質問への回答を参照してください。

于 2012-10-02T01:58:34.250 に答える