我有一個彈開的NSMenu一個狀態的項目,我有一個代表組,它的正確掛接(-(void)menuNeedsUpdate:(NSMenu *)menu
正常工作)。也就是說,該方法設置爲在菜單顯示之前調用,我需要監聽並觸發異步請求,稍後在打開菜單時更新菜單,但我無法弄清楚應該如何完成該操作。Apple如何在機場菜單打開時進行更新? (如何更改NSMenu時候已經是打開的)
謝謝:)
編輯
好了,我現在在這裏:
當你點擊菜單項(狀態欄),選擇被稱爲運行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 2012-04-26 18:57:23