Dieser Code wird zum Erstellen eines Countdown-Timers verwendet.
Code für .h-Datei.
@interface UIMyContoller : UIViewController {
NSTimer *timer;
IBOutlet UILabel *myCounterLabel;
}
@property (nonatomic, retain) UILabel *myCounterLabel;
-(void)updateCounter:(NSTimer *)theTimer;
-(void)countdownTimer;
@end
Code für .m-Datei.
@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];
}
Hoffe, das hilft Ihnen aus.
Vielen Dank seine Arbeit :) –
Ich denke, dass wenn Sie einen 30-Minuten-Timer haben, wird Ihr Bildschirm ausgeschaltet und auch Ihre App wird aufhören zu arbeiten. Also, wenn du zurück gehst und den Bildschirm anklickst, um zu deiner App zu gehen, wirst du die Zeit nicht zählen. –
das Problem damit ist: Wenn Sie Navigation Controller verwenden, gehen Sie zurück zur vorherigen Ansicht und laden Sie diese Ansicht neu, die Sekunden werden zwei statt einer nach unten gehen. – Kiddo