2012-10-02 7 views
5

私はプログラム的にメニューを作成しています:Cocoa - NSMenuItemのアクションでパラメータを渡すには?

+ (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:)を渡ししようとした場合、私がキャッチされない取得例外エラー。

+0

クラッシュの原因となっている実際のコードを提供できますか? –

+0

は、 'action:@selector(goToURL:mid:)'を呼び出すところで完全な機能を追加しました。... XCodeで '未使用の変数mid'という警告も受け取りました。 – janeh

答えて

6

アクションメソッドに2つのパラメータを設定することはできません。この場合はメニューアイテムになる送信者が1人だけ必要です。メニュー項目に余分な情報を添付してアクションメソッドで取得する方法については、this questionへの回答を参照してください。

関連する問題