我正在使用NSTimer
在录制时在标签上显示秒数。
我点击录制按钮时启动计时器,并在点击停止按钮时停止计时器。
当我点击播放按钮时,计时器没有重新启动。
-(void)startTimer
{
playTimer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(timerController)
userInfo:nil
repeats:YES];
}
- (NSString*)getTimeStr : (int) secondsElapsed
{
seconds = secondsElapsed % 60;
int minutes = secondsElapsed / 60;
int hours = secondsElapsed/3600;
return [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
- (void)timerController{
seconds++;
[[self timeLabel] setText:[self getTimeStr:(seconds)]];
}
- (IBAction)recordTapped:(id)sender {
[self startTimer];
}
- (IBAction)stopTapped:(id)sender {
[playTimer invalidate];
playTimer=nil;
_timeLabel.text=@"00:00:00";
}
- (IBAction)playTapped:(id)sender {
[self startTimer];
}
答案 0 :(得分:0)
- (void)resetTimer {
if(playTimer) {
[playTimer invalidate];
playTimer = nil;
}
}
您应该每次resetTimer
再次调用startTimer
方法。
答案 1 :(得分:0)
正如评论中所提到的,有两个错误:
错误#1
在重新启动计时器之前,您应该始终将变量seconds
重置为0(可能会在startTimer
的第1行重置它)
Bug#2
变量seconds
被getTimeStr
函数的第1行覆盖。您应该将seconds
替换为int sec
,将return
行替换为seconds
替换为sec
。