ホストメニューが表示されている間、nsmenuitemを更新します
-
22-10-2019 - |
質問
を持っています NSMenuItem
進捗状況を示すために更新する必要があること(Time Machineがバックアップで行うように)。問題は、私が新しいものを設定したときです title
その上 NSMenuItem
そしてその title
変化していません。
実際、メニューを閉じて再開すると変化していますが、ユーザーが見ている間に更新したいと思います。
また、アイテムを削除して、結果なしで再挿入してみました。
ポインターはありますか?
解決
これは実際には、更新コードが実行された場合、追加の努力なしで動作します ループモードを実行します メニュートラッキング中に使用されます。これは NSEventTrackingRunLoopMode
, 、しかし、あなたはおそらく使いたいだけです NSRunLoopCommonModes
したがって、メニューのタイトルは、メニューが引き下げられたときに正しいです。
これがメニュー項目の簡単な例です foo
アプリが起動してから秒数がカウントされます。
- (void)doStuff;
{
static int i = 0;
[foo setTitle:[NSString stringWithFormat:@"%d", ++i]];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification;
{
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:
[self methodSignatureForSelector:@selector(doStuff)]];
[invocation setTarget:self];
[invocation setSelector:@selector(doStuff)];
[[NSRunLoop mainRunLoop] addTimer:[NSTimer timerWithTimeInterval:1 invocation:invocation repeats:YES] forMode:NSRunLoopCommonModes];
}
所属していません StackOverflow