2012-10-02 17 views
5

मैं प्रोग्राम के रूप में एक मेनू बनाने हूँ:कोको - 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:) 'कह रहा हूं ... मुझे एक्सकोड में' अप्रयुक्त चर मध्य 'चेतावनी भी मिलती है ... मैं इसका उपयोग कर रहा हूं! – janeh

उत्तर

6

आपके पास एक क्रिया विधि में 2 पैरामीटर नहीं हो सकते हैं। वहां केवल एक होना चाहिए, प्रेषक, जो इस मामले में मेनू आइटम होगा। मेनू आइटम में अतिरिक्त जानकारी संलग्न करने और इसे क्रिया विधि में पुनर्प्राप्त करने के तरीके के लिए this question का उत्तर देखें।

संबंधित मुद्दे