停止并重置NSTimer

时间:2013-07-25 21:11:49

标签: ios nstimer

我有一个简单的计时器使用,通过按下按钮激活。它从60到0没有问题,但我想要的是停止并重置按钮上的计时器。我按照下面的代码按下按钮时设法停止了它,但由于某种原因无法让它重置并停在60.这应该很简单,但它不起作用。有什么建议吗?

使用简单操作设置计时器

- (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];

}

2 个答案:

答案 0 :(得分:6)

您需要将秒数设置为0,否则您总是使计时器无效,但永远不会再启动它:

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

答案 1 :(得分:2)

停止计时器是什么意思?计时器不会停止。您希望countDownLabel.text显示60?当您使计时器无效时,它将停止运行并调用timerRun方法如果要重新启动计时器,只需再次调用setTimer功能。我认为你的意思是在countDownLabel.text = @"60"之后[countdownTimer invalidate];,当你再次点击按钮时,计时器将再次启动,并将更改标签。如果这是您正在寻找的,请告诉我。

正如克里斯蒂安所说,你必须重置第二个反击者

secondCounter = 0;