進行状況を表示するために更新する必要があるNSMenuItem
ものがあります(タイムマシンがバックアップで行うように)。問題は、そのtitle
上に新しいものを設定してもNSMenuItem
、title
変更されないことです。
メニューを閉じて再度開くと実際には変化していますが、ユーザーが見ている間に更新したいと考えています。
また、アイテムを削除して再挿入しようとしましたが、結果はありませんでした。
ポインタはありますか?
進行状況を表示するために更新する必要があるNSMenuItem
ものがあります(タイムマシンがバックアップで行うように)。問題は、その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];
}