У меня есть элемент состояния, который открывает NSMenu, и у меня есть набор делегатов, и он подключен правильно (-(void)menuNeedsUpdate:(NSMenu *)menu
отлично работает). Тем не менее, этот метод должен быть вызван до отображения меню, мне нужно его прослушать и вызвать асинхронный запрос, позже обновив меню, пока он открыт, и я не могу понять, как это должно быть сделано ,Как Apple обновляет меню аэропорта, пока оно открыто? (Как изменить NSMenu, когда он уже открыт)
Спасибо :)
EDIT
Хорошо, теперь я здесь:
При нажатии на пункт меню (в строке состояния), селектор называется который запускает NSTask. Я использую центр уведомлений для прослушивания, когда эта задача будет завершена, и написать:
[[NSRunLoop currentRunLoop] performSelector:@selector(updateTheMenu:) target:self argument:statusBarMenu order:0 modes:[NSArray arrayWithObject:NSEventTrackingRunLoopMode]];
и есть:
- (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];
}
Этот метод определенно называется потому, что, если я нажму из меню и сразу же обратно на него я получаю обновленное меню с этой информацией. Проблема в том, что он не обновляется, а меню открыто.
Несмотря на долгое время с вопроса, мне все еще было интересно об этом, и я очень рад видеть, почему то, что у меня было, не работает. Спасибо! – Aaron