У меня есть элемент статусной панели, который открывает NSMenu, и у меня есть набор делегатов, и он правильно подключен (-(void)menuNeedsUpdate:(NSMenu *)menu
отлично работает). Тем не менее, этот метод должен быть вызван до отображения меню, мне нужно его прослушать и вызвать асинхронный запрос, позже обновив меню, пока он открыт, и я не могу понять, как это должно быть сделано.
Спасибо:)
ИЗМЕНИТЬ
Хорошо, я сейчас здесь:
Когда вы нажимаете на элемент меню (в строке состояния), вызывается селектор, который запускает 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];
}
Этот метод определенно называется, потому что, если я выхожу из меню и сразу вернусь к нему, я получаю обновленное меню с этой информацией. Проблема в том, что он не обновляется, а меню открыто -.