NSTimer - if语句在timer内不起作用 - CountDown Timer

时间:2010-11-13 20:35:58

标签: iphone objective-c cocoa nstimer

我正在计算倒计时器,并且在计数小于0时无法获得if语句来停止计时器。任何有关解决此问题的指导都将非常感激。在此先感谢您的帮助..

   -(void) startCountdown{
time = 90;
//NSLog[@"Time Left %d Seconds", time];
//This timer will call the function updateInterface every 1 second

   myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateInterface:) userInfo:nil repeats:YES];
}



-(void) updateInterface:(NSTimer*)theTimer{
if(time >= 0){
    time --;
    CountDownText.text = [NSString stringWithFormat:@"%d", time];
    NSLog(@"Time Left %d Seconds", time);
}
else{
    CountDownText.text =@"Times Up!";
    NSLog(@"Times Up!");
    // Timer gets killed and no longer calls updateInterface
    [myTimer invalidate];
}
}

2 个答案:

答案 0 :(得分:1)

我测试了你的代码,它运行得很好,定时器停在-1。所以我最好的猜测是time可能被声明为无符号值,所以它永远不会小于零。

答案 1 :(得分:0)

看起来你的倒计时不会停止,直到它达到-1(而不是0),因为你要检查大于或等于为零然后递减(然后递减)显示)。

首先递减,然后检查时间是否大于零:

-(void) updateInterface:(NSTimer*)theTimer{
    time --;
    if(time > 0){
        CountDownText.text = ...

或检查时间是否大于1:

-(void) updateInterface:(NSTimer*)theTimer{
    if(time > 1){
        time --;
        CountDownText.text = ...