私は動的に追加されたNSMenuItemsを持つNSMenuを持っています。 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クロックがそれを行います(秒を表示すると、より顕著になります)。 –