nstimer
を使用して、ラベルにカウントダウンタイマーを表示しています。私は、タイマーを開始し、ラベル内のカウントダウンを表示することができますが、タイマーは毎秒を表示するのではなく、次の秒にジャンプします。カウントダウンタイマーが10秒に設定されている場合、カウントダウンタイマーラベルには9,7,5,3,1のみが表示されます。nstimerカウントダウンが期待通りに機能しない
以下は私のコードです。
NSTimer *tktTimer;
int secondsLeft;
- (void)startTimer {
secondsLeft = 10;
tktTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateCountdown) userInfo:nil repeats: YES];
}
-(void) updateCountdown {
int hours, minutes, seconds;
secondsLeft--;
NSLog(@"secondsLeft %d",secondsLeft);//every time it is printing 9,7,5,3,1 but should print 9,8,7,6,5,4,3,2,1,0
hours = secondsLeft/3600;
minutes = (secondsLeft % 3600)/60;
seconds = (secondsLeft %3600) % 60;
countDownlabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
if (--secondsLeft == 0) {
[tktTimer invalidate];
countDownlabel.text = @"Completed";
}
}
本当にありがとうございます。
私はこの条件を使用すると、私はタイマーを無効にする問題に直面しています。タイマーを無効にするコードを表示することによってあなたの答えを編集することができます。 – Madhu
コードを振り返って、どのように動作するのかは、「0」ではなく「1」で発生します。私は私の答えを更新します。 – EvilGeniusJamie