0

小さな「Menubar-Widget」を作成しようとしています。つまり、実際にはウィジェットではありませんが、ドックにはアイコンがなく、メニューまたはステータスバーにアイコンがある Cocoa アプリケーションです。

ボタンをクリックして NSTimer を起動すると、カウントダウンが表示されます。しかし、そうではありません...

- (void)update {
    NSTimeInterval interval = [endDate timeIntervalSinceNow];

    int _seconds = (int)interval%60;
    int _minutes = (((int)interval-_seconds)/60)%60;
    int _hours = ((int)interval-_seconds-_minutes*60)%3600;

    timeLeft.stringValue = [NSString stringWithFormat:@"%i:%i:%i",_hours,_minutes,_seconds];

    NSLog(@"%i:%i:%i",_hours,_minutes,_seconds);
}

では、正確には何が起こるのでしょうか?

タイマーを起動すると、インターフェイスは timeLeft ラベルを更新しません。NSLog() も機能しません。しかし、ボックスを閉じると、NSLog は正しい時刻を表示し、ボックスを再度開くと、正しい時刻を示しています。しかし、ボックスをもう一度閉じるまで、それ以上更新されません。

4

1 に答える 1

0

相対時間を絶対時間 (例: 午後 2 時 45 分) に置き換えました... インターフェイスはまだ更新されていませんが、問題ありません。

于 2011-08-06T14:11:07.487 に答える