Tengo un elemento de la barra de estado que abre un NSMenu, y tengo un juego de delegados y está conectado correctamente (-(void)menuNeedsUpdate:(NSMenu *)menu
funciona bien). Dicho esto, ese método se configura para que se llame antes de que se muestre el menú, necesito escuchar eso y activar una solicitud asincrónica, luego actualizar el menú mientras está abierto, y no puedo entender cómo se supone que debe hacerse .¿Cómo actualiza Apple el menú del aeropuerto mientras está abierto? (Cómo cambiar NSMenu cuando ya está abierto)
Gracias :)
EDIT
Ok, ahora estoy aquí:
Al hacer clic en el elemento de menú (en la barra de estado), un selector se llama que ejecuta un NSTask. Puedo usar el centro de notificación para escuchar cuando se termine esa tarea, y escribir:
[[NSRunLoop currentRunLoop] performSelector:@selector(updateTheMenu:) target:self argument:statusBarMenu order:0 modes:[NSArray arrayWithObject:NSEventTrackingRunLoopMode]];
y tienen:
- (void)updateTheMenu:(NSMenu*)menu {
NSMenuItem *mitm = [[NSMenuItem alloc] init];
[mitm setEnabled:NO];
[mitm setTitle:@"Bananas"];
[mitm setIndentationLevel:2];
[menu insertItem:mitm atIndex:2];
[mitm release];
}
Este método es, sin duda llama porque si hago clic sobre el menú e inmediatamente volver En él, obtengo un menú actualizado con esta información. El problema es que no está actualizando, mientras que el menú está abierto.
A pesar del largo tiempo de la pregunta, todavía tengo curiosidad por esto y estoy muy contento de ver por qué lo que tenía no funcionaba. ¡Gracias! – Aaron