2010-04-13 13 views
9

Tengo mi código de temporizador configurado, y es totalmente kosher, pero quiero que mi etiqueta muestre "Minutos: segundos" en lugar de solo segundos.iPhone: NSTimer Countdown (minutos en pantalla: segundos)

-(void)countDown{ 

    time -= 1; 

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

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

Ya he configurado "time" en 600, o 10 minutos. Sin embargo, quiero que la pantalla muestre 10:59, 10:58, etc. hasta que llegue a cero.

¿Cómo puedo hacer esto?

Gracias!

Respuesta

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

Eso es genial! Sin embargo, una vez que los segundos son inferiores a diez, muestra "9: 9", "9: 8", etc. ¿Hay alguna manera de hacer ese "9:09", "9:08"? – user298261

+5

Claro. 'NSString * padZero = @" "; if (segundos <10) padZero = @ "0"; theTimer.text = [cadena NSStringWithFormat: @ "% i:% @% i", minutos, padZero, segundos]; ' –

+11

Prefiero usar el formato printf para los números de relleno como ese:' [NSString stringWithFormat: @ "% d :% .2d ", minutos, segundos]' –

0

Por el momento, he hecho un poco de actualización de primera respuesta, que se elimine conflictos que se asocian a NSInteger y int:

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