質問

を持っています 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];
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top