2012-10-02 24 views
5

Ben programlı bir menü oluşturma: Ben @selector(goToURL:) için parametre geçirmek nasılCocoa - Bir parametreyi NSMenuItem'in eylemi nasıl geçirilir?

+ (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++; 
     //... 
    } 
} 

, o yüzden diyebiliriz öğe tıklama: Ben yakalanmamış olsun @selector(goToURL:var2:) geçen çalışırsanız

+ (void)goToURL:(id)obj { 
    NSLog(@"Open url:...%@", obj); 
} 

istisna hatası.

+0

Çağırdığınız gerçek kodu çökmeye neden oluyor musunuz? –

+0

, "action: @selector (goToURL: mid:)' demek istediğim tüm işlevi ekledi ... Ayrıca XCode'da 'Unused variable mid' uyarısı alıyorum ... Kullanıyorum! – janeh

cevap

6

Bir eylem yöntemine 2 parametreniz olamaz. Sadece bir tane olmalı, bu durumda menü öğesi olan gönderici. Bir menü öğesine fazladan bilgi eklemek ve eylem yöntemine almak için this question cevabına bakınız.

İlgili konular