2012-10-02 17 views
5

Estoy creando un menú de programación:Cocoa - ¿Cómo pasar un parámetro con la acción de 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++; 
     //... 
    } 
} 

¿Cómo pasar un parámetro a @selector(goToURL:), de manera que el elemento de clic que podría llamar:

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

si intento pasar @selector(goToURL:var2:) consigo no detectada error de excepción

+0

¿Podría proporcionar el código real que está llamando que está causando el bloqueo? –

+0

se agregó la función completa donde llamo 'action: @selector (goToURL: mid:)' ... También recibo la advertencia 'Unused variable mid' en XCode ... ¡Lo estoy usando! – janeh

Respuesta

6

No puede tener 2 parámetros para un método de acción. Solo debería haber uno, el remitente, que en este caso sería el elemento del menú. Consulte la respuesta al this question para obtener información adicional sobre un elemento del menú y recuperarlo en el método de acción.

Cuestiones relacionadas