2013-06-17 18 views
24

Sto facendo un'applicazione in cui sono in corso gli esami, quindi quando l'esame inizia, l'ora dovrebbe iniziare con quello. Ad esempio 30 minuti e dovrebbe ridurre come 29:59.CountDown Timer ios tutorial?

Come posso implementarlo?

Qualcuno può darmi un esempio di esempio o un facile tutorial passo passo che posso seguire?

risposta

66

Questo codice viene utilizzato per creare un timer per il conto alla rovescia.

Codice per file .h.

@interface UIMyContoller : UIViewController { 

NSTimer *timer; 
    IBOutlet UILabel *myCounterLabel; 
} 

@property (nonatomic, retain) UILabel *myCounterLabel; 

-(void)updateCounter:(NSTimer *)theTimer; 
-(void)countdownTimer; 

@end 

Codice per file .m.

@implementation UIMyController 
@synthesize myCounterLabel; 

int hours, minutes, seconds; 
int secondsLeft; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    secondsLeft = 16925; 
    [self countdownTimer]; 
} 

- (void)updateCounter:(NSTimer *)theTimer { 
    if(secondsLeft > 0) { 
     secondsLeft -- ; 
     hours = secondsLeft/3600; 
     minutes = (secondsLeft % 3600)/60; 
     seconds = (secondsLeft %3600) % 60; 
     myCounterLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds]; 
    } else { 
     secondsLeft = 16925; 
    } 
} 

-(void)countdownTimer { 

    secondsLeft = hours = minutes = seconds = 0; 
    if([timer isValid]) { 
     [timer release]; 
    } 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES]; 
    [pool release]; 
} 

Spero che questo ti aiuti.

+0

Grazie mille per il suo funzionamento :) –

+0

Penso che se si dispone di un timer di 30 minuti lo schermo si spegne e anche l'app smetterà di funzionare. Quindi se torni indietro accendendo lo schermo per andare alla tua app non eseguirai il conto alla rovescia del tempo trascorso. –

+1

il problema con questo è: se si utilizza il controller di navigazione, tornare alla vista precedente e ricaricare questa vista, i secondi scenderanno due invece di uno. – Kiddo