Tengo un NSMenuItem con un montón de elementos, sin embargo ... la lista simplemente no se habilita.NSMenuItem Habilitar elementos
lo que quiero decir:
Este es mi código:
- (void)didFetchNewList:(NSArray *)list
{
NSArray *smallList = [list subarrayWithRange:NSMakeRange(0, 10)];
NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
for (NSDictionary *dict in smallList)
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MMM dd @ HH:mm:ss"];
NSMenuItem *soMenuItem = [[NSMenuItem alloc] initWithTitle:
[dateFormatter stringFromDate:[dict objectForKey:@"date"]]
action:nil
keyEquivalent:@""];
[soMenuItem setEnabled:YES];
[menu addItem:soMenuItem];
}
[menu addItem:[NSMenuItem separatorItem]];
NSMenuItem *soMenuItem = [[NSMenuItem alloc]
initWithTitle:@"Settings" action:nil keyEquivalent:@"S"];
[soMenuItem setEnabled:YES];
[menu addItem:soMenuItem];
[statusItem setMenu:menu];
[statusItem setEnabled:YES];
}
yo pongo todo como está habilitado, sin embargo, todavía está desactivada. ¿Como puedo resolver esto?
Si bien los elementos del menú sí necesitan tener un selector válido, no necesariamente tienen que tener un destino (en otras palabras, el objetivo ** puede ** ser 'nil'). Un objetivo "nil" significa "usar el primer objeto en la cadena de respuesta que responde a mi selector". Es funcionalmente equivalente a establecer el objetivo del elemento de menú al objeto proxy 'Primer Respondedor' en el archivo de punta. (Consulte http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/MenuList/Articles/EnablingMenuItems.html#//apple_ref/doc/uid/20000261-74653-BAJBGJHB) – NSGod
¡Ajá! Ya estaba pensando por qué demonios el método de inicialización no tiene un argumento objetivo. Gracias por aclarar eso! – v1Axvw
Su segunda edición aún no es totalmente correcta: el primer respondedor recibirá el mensaje de acción, pero no necesita implementarlo. Si no lo hace, reenviará el mensaje a su siguiente respondedor. Esa es la cadena de respuesta en el trabajo. –