2010-04-13 7 views
9

Ich habe meinen Timer-Code eingerichtet, und es ist alles koscher, aber ich möchte, dass mein Etikett "Minuten: Sekunden" statt nur Sekunden anzeigt.iPhone: NSTimer Countdown (Anzeige Minuten: Sekunden)

-(void)countDown{ 

    time -= 1; 

    theTimer.text = [NSString stringWithFormat:@"%i", time]; 

    if(time == 0) 
    { 
    [countDownTimer invalidate]; 
    } 
} 

Ich habe bereits "Zeit" auf 600 oder 10 Minuten eingestellt. Ich möchte jedoch, dass das Display 10:59, 10:58 usw. anzeigt, bis es Null erreicht.

Wie mache ich das?

Danke!

Antwort

19
int seconds = time % 60; 
int minutes = (time - seconds)/60; 
theTimer.text = [NSString stringWithFormat:@"%d:%.2d", minutes, seconds]; 
+0

Das ist großartig! Sobald die Sekunden jedoch unter zehn sind, wird "9: 9", "9: 8" usw. angezeigt. Gibt es eine Möglichkeit, das "9:09", "9:08" zu machen? – user298261

+5

Sicher. 'NSString * padZero = @" "; if (Sekunden <10) padZero = @ "0"; theTimer.text = [NSString stringWithFormat: @ "% i:% @% i", Minuten, padZero, Sekunden]; ' –

+11

Ich würde lieber printf-Formatierung für solche Zahlen verwenden:' [NSString stringWithFormat: @ "% d :%. 2d ", Minuten, Sekunden]' –

0

Mit der Zeit habe ich ein wenig Upgrade erste Antwort gemacht wurde, entfernt es Konflikte, die aus NSInteger und int verbunden:

NSInteger secondsLeft = 987; 
int second = (int)secondsLeft % 60; 
int minutes = ((int)secondsLeft - second)/60; 
theTimer.text = [NSString stringWithFormat:@"%02d:%02d", minutes, second]]; 
Verwandte Themen