Tôi đã có một thanh trạng thái bật mở NSMenu, và tôi có một nhóm đại biểu và nó được nối một cách chính xác (-(void)menuNeedsUpdate:(NSMenu *)menu
hoạt động tốt). Điều đó nói rằng, phương thức đó được thiết lập để được gọi trước khi menu được hiển thị, tôi cần lắng nghe và kích hoạt yêu cầu không đồng bộ, sau đó cập nhật menu trong khi nó đang mở và tôi không thể biết được .Apple cập nhật trình đơn Sân bay khi nó đang mở như thế nào? (Làm thế nào để thay đổi NSMenu khi nó đã được mở)
Cảm ơn :)
EDIT
Ok, Tôi bây giờ ở đây:
Khi bạn nhấp vào mục menu (trên thanh trạng thái), một selector được gọi là chạy một NSTask. Tôi sử dụng trung tâm thông báo để lắng nghe khi nhiệm vụ được hoàn tất, và viết:
[[NSRunLoop currentRunLoop] performSelector:@selector(updateTheMenu:) target:self argument:statusBarMenu order:0 modes:[NSArray arrayWithObject:NSEventTrackingRunLoopMode]];
và có:
- (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];
}
Phương pháp này chắc chắn được gọi là bởi vì nếu tôi bấm ra khỏi menu và ngay lập tức trở lại vào nó, tôi nhận được một menu cập nhật với thông tin này trong đó. Vấn đề là nó không được cập nhật trong khi menu đang mở.
Bất chấp thời gian dài từ câu hỏi, tôi vẫn tò mò về điều này và tôi rất vui khi thấy tại sao những gì tôi đã không làm việc. Cảm ơn bạn! – Aaron