2012-04-03 96 views
0

我有一個很大的問題,無法解決它: 我用NSTimer進行倒計時,倒數計時工作正常,單擊按鈕,倒數開始,當達到零時標籤出現。 當我再次按下按鈕並且倒計時再次開始時,問題就出現了,但是這次是兩倍!而下一次更快,更快...我不知道該怎麼辦...我需要做一個循環,但只能工作一次... 我一直在尋找,但我沒有找到任何關於它...沒有知道是否有人有同樣的問題。 Thanx。每次點擊都會倒數更快

NSTimer *timer; int i; 

-(IBAction)pressButton{ 
    i = 10; 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 
              target:self 
              selector:@selector(timerFires) 
              userInfo:nil 
              repeats:YES]; 
    [timer fire]; 
} 

- (void) timerFires{ 
    if(i > 0){ 
     i--; 
     label.text = [NSString stringWithFormat:@"%i", i]; 
    } 
    else{ 
     label.text = @"Tiempo!!"; 
     timer = nil; 
    } 
} 
+0

下一次請花一些時間在你的代碼的格式上。 – 2012-04-03 19:07:58

回答

1

我認爲這可能是bcoz你永遠不會停止你的定時器,所以當你點擊它不如2定時器運行等第二次....嘗試停止你的定時器,你點擊開始之前它再次..

5

您可能多次啓動計時器。當你第二次點擊按鈕時,你需要取消第一個定時器。

-(IBAction)pressButton{ 
    i = 10; 
    if (timer != nil) { 
    [timer invalidate]; 
    } 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 
            target:self 
            selector:@selector(timerFires) 
            userInfo:nil 
            repeats:YES]; 
    [timer fire]; 

} 
+0

或者,他可以禁用該按鈕,或更改其功能,以便它取消(即中止)第一個定時器,而不用開始另一個倒計時。 – jer 2012-04-03 15:06:39

+0

非常感謝你......這就是我所缺少的...另外我添加禁用按鈕,所以當時間到達零時,按鈕被禁用。非常感謝你!!! – jaimex127 2012-04-03 19:43:19