4

我有一个简单的计时器,它通过按下按钮激活。它从 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];

}
4

2 回答 2

6

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

- (IBAction)timerStart:(id)sender {
    if(!secondCounter == 0) {
        [countdownTimer invalidate];
        secondCounter = 0;
    }
    else {
        [self setTimer];
    }
}
于 2013-07-25T21:30:16.530 回答
2

你是什​​么意思停止计时器?计时器不会停止。您想必须countDownLabel.text显示 60 吗?当您使计时器无效时,它将停止运行并调用timerRun方法如果您想重新启动计时器,只需setTimer再次调用函数。我认为您的意思是countDownLabel.text = @"60"之后[countdownTimer invalidate]; ,当您再次单击按钮时,计时器将再次启动并更改标签。让我知道这是否是您想要的。

正如克里斯蒂安所说,您必须重置 secondCounter

secondCounter = 0;
于 2013-07-25T21:19:55.003 回答