Ios 停止并重置NSTimer
我有一个简单的计时器,用一个按钮就可以启动。它从60运行到0没有问题,但我想要的是停止并重置按钮上的计时器。当按下按钮时,我使用下面的代码成功地将其停止,但由于某些原因,无法使其复位并在60时停止。这应该很简单,但不起作用。有什么建议吗 使用简单操作设置计时器Ios 停止并重置NSTimer,ios,nstimer,Ios,Nstimer,我有一个简单的计时器,用一个按钮就可以启动。它从60运行到0没有问题,但我想要的是停止并重置按钮上的计时器。当按下按钮时,我使用下面的代码成功地将其停止,但由于某些原因,无法使其复位并在60时停止。这应该很简单,但不起作用。有什么建议吗 使用简单操作设置计时器 - (IBAction)timerStart:(id)sender { if(!secondCounter == 0){ [countdownTimer invalidate]; } else {
- (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];
}
你停止计时器是什么意思?计时器不会停止。您希望必须有
countdownlab.text
才能显示60?当您使计时器无效时,它将停止运行并调用timerRun
方法,如果您想重新启动计时器,只需再次调用setTimer
功能即可。我想你的意思是在[countdownTimer invalidate]之后加上countDownLabel.text=@“60”
代码>当您再次单击按钮时,计时器将再次启动并更改标签。让我知道这是否是你要找的
正如Christian所说,你必须重置第二个计数器
secondCounter = 0;
您需要将秒数设置为0,否则您总是会使计时器无效,但不会再次启动计时器:
- (IBAction)timerStart:(id)sender {
if(!secondCounter == 0) {
[countdownTimer invalidate];
secondCounter = 0;
}
else {
[self setTimer];
}
}
嗨,燕。目前,它会按预期使计时器无效,并使用您建议的代码将值返回到60。但是,当我再次按下按钮时,它不会重新启动计时器。相反,它是一个死按钮。有什么想法吗?必须在我的
if
代码中。感谢我有缺陷的逻辑Hanks Christian。我接受了杨的答案,因为我使用了他的两部分答案,尽管你的答案很有帮助。我投了赞成票。谢谢。这对我很有效