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"이됩니다. 0인지 확인하는 것이 좋습니다. 내 대답을 업데이트 할게. – EvilGeniusJamie