停止并重置NSTimer

我有一个简单的计时器使用,是一个button被激活。 它从60运行到0没有问题,但我想要的是停止和button上重置计时器。 我已经设法停止它,当按下button使用下面的代码,但由于某种原因不能得到它重置,并在60停止。这应该是简单的,但它是行不通的。 有什么build议么?

定时器使用简单的动作设置

- (IBAction)timerStart:(id)sender { if(!secondCounter == 0){ [countdownTimer invalidate]; } else { [self setTimer]; } } 

代码定时器

 - (void)timerRun { secondCounter = secondCounter - 1; int minutes = secondCounter; NSString *timerOutput = [NSString stringWithFormat:@"%d", minutes ]; countDownLabel.text = timerOutput; if(secondCounter == 0){ [countdownTimer invalidate]; countdownTimer = nil; } } - (void)setTimer { secondCounter = 60; countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerRun) userInfo:nil repeats:YES]; } 

你什么意思停止计时器? 计时器不会停止。 你想有countDownLabel.text显示60? 当你使计时器失效时,它将停止运行,并调用timerRun方法如果你想重新启动计时器,只需再次调用setTimer函数。 我想你的意思是在[countdownTimer invalidate];之后有countDownLabel.text = @"60" [countdownTimer invalidate]; 当你再次点击该button时,定时器将再次启动,并将更改标签。 让我知道这是你在找什么。

正如克里斯蒂安说,你必须重置第二个计数器

 secondCounter = 0; 

您需要将秒设置为0,否则您总是无效您的计时器,但从不再次启动它:

 - (IBAction)timerStart:(id)sender { if(!secondCounter == 0) { [countdownTimer invalidate]; secondCounter = 0; } else { [self setTimer]; } }