Ho un elemento barra di stato che apre un NSMenu, e ho un set delegato e è collegato correttamente (-(void)menuNeedsUpdate:(NSMenu *)menu
funziona bene). Detto questo, il metodo è configurato per essere chiamato prima che venga visualizzato il menu, ho bisogno di ascoltarlo e di attivare una richiesta asincrona, in seguito di aggiornare il menu mentre è aperto, e non riesco a capire come dovrebbe essere fatto .In che modo Apple aggiorna il menu Airport mentre è aperto? (Come cambiare NSMenu quando è già aperto)
Grazie :)
EDIT
Ok, ora sono qui:
Quando si fa clic sulla voce di menu (nella barra di stato), un selettore si chiama che esegue un NSTask. Io uso il centro di notifica per ascoltare quando quel compito è finito, e scrivere:
[[NSRunLoop currentRunLoop] performSelector:@selector(updateTheMenu:) target:self argument:statusBarMenu order:0 modes:[NSArray arrayWithObject:NSEventTrackingRunLoopMode]];
e avere:
- (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];
}
Questo metodo è sicuramente chiamato perché se scatto fuori il menu e immediatamente indietro su di esso, ottengo un menu aggiornato con queste informazioni in esso. Il problema è che non si sta aggiornando, mentre il menu è aperto.
Nonostante il lungo tempo trascorso dalla domanda, sono ancora curioso di questo e sono così felice di vedere perché quello che avevo non funzionava. Grazie! – Aaron