2013-06-17 3 views
24

Ich mache eine Anwendung, wo die Prüfungen laufen, also wenn die Prüfung beginnt, sollte die Zeit damit beginnen. Zum Beispiel 30 Minuten und es sollte wie 29:59 reduzieren.CountDown Timer iOS-Tutorial?

Wie kann ich das umsetzen?

Kann mir bitte jemand ein Beispiel oder eine einfache Schritt für Schritt Anleitung geben, die ich folgen kann?

Antwort

66

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.

+0

Vielen Dank seine Arbeit :) –

+0

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. –

+1

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