Ich habe ein NSMenu mit dynamisch hinzugefügten NSMenuItems. Das NSMenu wird nicht ordnungsgemäß aktualisiert, während es geöffnet bleibt. Ich rufe NSMenu Update-Methode in NSEventTrackingRunLoopModes
.Wie aktualisiere ich NSMenu, während es geöffnet ist?
Ich habe folgende Methoden implementiert, um NSMenu zu aktualisieren.
- (void)menuNeedsUpdate:(NSMenu *)menu {
for (NSInteger index = 0; index < count; index++)
[self menu:menu updateItem:[menu itemAtIndex:index]
atIndex:index
shouldCancel:NO];
}
- (BOOL)menu:(NSMenu *)menu updateItem:(NSMenuItem *)item atIndex:(NSInteger)index shouldCancel:(BOOL)shouldCancel`
- (NSInteger)numberOfItemsInMenu:(NSMenu *)menu
'[NSMenu update]' ruft keine Delegiertenmethoden auf. Ich bearbeite Menüelemente dynamisch in einem Timer und NSMenu wird nicht aktualisiert, während es geöffnet ist. – Vinpai
Es wird nicht aktualisiert, selbst wenn Sie Dinge wie '- [NSMenu addItem:]' oder '- [NSMenuItem setTitle:]' als Antwort auf Ihren Timer aufrufen? Ich bin sicher, ich habe gesehen, Menüs zu aktualisieren, während sie geöffnet sind, so ist es möglich. –
@KenThomases Die erste Party-OS-Uhr macht das (es ist auffälliger, wenn Sie Sekunden anzeigen). –