2010-11-13 49 views
0

我正在倒計時計時器,並且無法在計數小於0時使if語句停止定時器。解決此問題的任何指導將會很大讚賞。在此先感謝您的幫助..NSTimer - 如果語句不在定時器內工作 - CountDown定時器

-(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 [email protected]"Times Up!"; 
    NSLog(@"Times Up!"); 
    // Timer gets killed and no longer calls updateInterface 
    [myTimer invalidate]; 
} 
} 
+0

問題是什麼?計時器是否繼續倒計時? – 2010-11-13 20:41:11

回答

0

看起來你的倒計時不會停止,直到它得到,因爲你檢查大於 - 或 - 等於來爲-1(而不是0)零然後遞減(然後顯示)。

要麼減量,然後再檢查,如果時間是大於零:

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

或檢查,如果時間大於1:

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

我測試你的代碼,它完美地工作並且定時器停在-1。所以我最好的猜測是time可能被聲明爲無符號值,所以它永遠不會小於零。

+0

以前,計時器將運行到負數,並不會停止。我將時間值設置爲> = 1,現在停止計數爲0.感謝所有支持大家 – 2010-11-14 18:21:42