NSTimer con iOS

http://untitled.es/nstimer-con-ios/

Voy a crear un ejemplo muy básico de lo que se puede llegar a realizar con NSTimer.
Haré un segundero con 4 botones.

– Empezar
– Pausa
– Terminar
– Reiniciar

Nos ponemos con el tema

Antes de nada quiero indicar a las personas que vienen siguiendo los tutoriales, que he actualizado mi Xcode por la versión Xcode 4.3.1. Ya están disponibles otras versiones nuevas pero por ahora no he actualizado.

Lo primero es crear un proyecto nuevo.

Una vez con el proyecto creado voy a añadir la imagen de fondo que he creado para que la aplicación quede más bonita (es mi opinión), es la misma imagen que utilicé para la entrada anterior y tengo intención de utilizar para casi todas.

También añadiré una etiqueta y cuatro botones.
Imagen 1
Después de modificar algunas propiedades de los botones y de la etiqueta, como podéis ver la aplicación gana en diseño bastante.
Imagen 2
Una vez que tengamos la parte del diseño terminada pasamos a nuestros archivos de código.

Así debe quedar nuestro archivo .h

 

#import < UIKit/UIKit.h>
@interface ViewController : UIViewController{
    NSTimer *contadorTimer;
    IBOutlet UILabel *segundero;
    int i;
}
-(IBAction)empezar:(id)sender;
-(IBAction)terminar:(id)sender;
-(IBAction)pausa:(id)sender;
-(IBAction)reiniciar:(id)sender;
@end

 

Así debe quedar nuestro archivo .m

 

#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)comienza:(NSTimer *) elContador
{
    i=i+1;
    segundero.text = [[NSNumber numberWithInt:i] stringValue];
}
- (void)empezar:(id)sender{
contadorTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
                            target:self
                            selector:@selector(comienza:)
                            userInfo:nil
                            repeats:YES];
}
- (void)terminar:(id)sender{
    [contadorTimer invalidate];
    contadorTimer = nil;
    i=1;
    segundero.text = @"✿";
}
- (void)pausa:(id)sender{
    [contadorTimer invalidate];
    contadorTimer = nil;
}
- (void)reiniciar:(id)sender{
    i=0;
    segundero.text = @"0";
}
@end

 

Desde scheduledTimerWithTimeInterval:1.0 podemos indicarle cada que intervalo hace lo que le digamos.
Yo en el ejemplo cada segundo estoy sumando i=i+1 y mostrando en la etiqueta el valor de i. Si le damos un poco de vueltas a la cabeza veremos rápidamente que se pueden hacer muchas cosas.
A mi así de repente se me ocurren 2, una cuenta atrás y que el intervalo de tiempo sea mayor y sirva para avisarnos de algo cada cierto tiempo. En fin, eso ya cada uno que le de vueltas.

Una vez terminado el código, únicamente nos faltaría enlazar éste. Para esto hacemos click sobre nuestro storyboard y enlazamos el código con nuestros botones y con la etiqueta.
Imagen 3
Bueno, pues con esto estaría terminada nuestra aplicación.
Aquí tenéis un vídeo de como se ve la aplicación funcionando en el emulador del Iphone.

Espero que os haya servido de ayuda.
@eneakao