동적으로 NSMenuItems가 추가 된 NSMenu가 있습니다. NSMenu가 열려있는 동안 제대로 새로 고쳐지지 않습니다. NSEventTrackingRunLoopModes
에서 NSMenu 업데이트 메서드를 호출합니다.열려있는 동안 NSMenu를 업데이트하는 방법은 무엇입니까?
다음 메소드를 구현하여 NSMenu를 업데이트했습니다.
- (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]'는 위임 메서드를 호출하지 않습니다. 동적으로 메뉴 항목을 채우고 NSMenu가 열려있는 동안 업데이트하지 않습니다. – Vinpai
타이머에 응답하여'- [NSMenu addItem :]'또는'- [NSMenuItem setTitle :]'같은 것을 호출해도 업데이트되지 않습니까? 메뉴가 열리는 동안 메뉴가 업데이트 된 것을 확인 했으므로 가능합니다. –
@KenThomases 자사 OS 시계가 그 기능을 수행합니다 (초를 표시하면 눈에 더 띄게됩니다). –