2010-11-13 25 views
0

Je travaille sur un compte à rebours et j'ai du mal à obtenir l'instruction if pour arrêter le temporisateur lorsque le compte est inférieur à 0. Toute indication sur la résolution serait grandement apprécié. Merci d'avance pour votre aide ..NSTimer - si l'instruction ne fonctionne pas dans le temporisateur - CountDown Timer

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

Quel est le problème? Est-ce que la minuterie continue à compter? –

Répondre

0

On dirait que votre compte à rebours ne s'arrêtera pas jusqu'à ce qu'il soit à -1 (au lieu de 0) parce que vous vérifiez pour plus-que-or- égale à zéro puis décrémentation (puis affichage).

Soit décrémenter d'abord, puis vérifier si le temps est supérieur à zéro:

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

ou vérifier si le temps est supérieur à 1:

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

Je l'ai testé votre code et cela a fonctionné parfaitement et la minuterie s'est arrêtée à -1. Donc, ma meilleure estimation est que time peut être déclaré comme valeur non signée, donc il ne devient jamais inférieur à zéro.

+0

Auparavant, le temporisateur passait en nombre négatif et ne s'arrêtait pas. J'ai mis la valeur de temps à> = 1 maintenant j'arrête le compte à 0. Merci pour tout le soutien tout le monde –