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.
fonte
2013-06-17 12:33:10
Grazie mille per il suo funzionamento :) –
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. –
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