2010-04-13 16 views
9

Mam ustawiony kod timera i wszystko jest koszerne, ale chcę, aby moja etykieta wyświetlała "Minuty: sekundy" zamiast sekund.iPhone: Odliczanie NSTimer (wyświetlanie minut: Sekundy)

-(void)countDown{ 

    time -= 1; 

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

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

Już ustawiłem "czas" na 600 lub 10 minut. Jednak chcę, aby wyświetlacz pokazywał 10:59, 10:58 itd., Aż osiągnie zero.

Jak to zrobić?

Dzięki!

Odpowiedz

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

To świetnie! Jednak gdy sekundy spadną poniżej dziesięciu, pokazuje "9: 9", "9: 8", itp. Czy jest sposób, aby to "9:09", "9:08"? – user298261

+5

Pewnie. 'NSString * padZero = @" "; if (seconds <10) padZero = @ "0"; theTimer.text = [NSString stringWithFormat: @ "% i:% @% i", minuty, padZero, sekundy]; ' –

+11

Wolę używać formatowania printf do wypełniania liczb takich jak:' [NSString stringWithFormat: @ "% d :% 2d ", minuty, sekundy]' –

0

Przez czas, ja zrobiłem mały upgrade pierwszej odpowiedzi, to usuwa konflikty związane z NSInteger i int:

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