Objective-C : NSTimer und countdown
Ich weiß, dass sollte ich verstehen, die Apple-Dokumentation für NSTimer, aber ich nicht! Ich habe auch gelesen, eine Menge Fragen, über die es aber nicht finden können, eine, die Suiten meinem Fall. Auch hier ist es:
Den Benutzer, geben Sie Stunden und Minuten durch Textfeldern. Ich umwandeln in ganze zahlen sind, und zeigt Sie in einer "countDownLabel".
- Wie kann ich den count-down auf null?
- Es wäre schön zu zeigen, die Sekunden, das ist etwas, das der Benutzer nicht importiert, aber ich denke, es wird nicht schwer sein zu zeigen.
- Wie könnte jemand aufhören, dieses Verfahren mit einer Presse von einem UIButton?
Ich weiß, dass ich viele Fragen...ich wäre echt dankbar wenn jemand helfen könnte!
int intHourhs;
intHourhs=([textHours.text intValue]);
int intMinutes;
intMinutes=([textMinutes.text intValue]);
int *intSeconds;
intSeconds=0;
NSString *stringTotalTime=[[NSString alloc] initWithFormat:@"%.2i:%.2i:%.2i",intHourhs,intMinutes,intSeconds];
[countDownLabel setFont:[UIFont fontWithName:@"DBLCDTempBlack" size:45]];
countDownLabel.text=stringTotalTime;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst sollten Sie ermitteln, was Ihre countdown-Zeit in Sekunden und steckte es in eine Instanz-variable (ivar)
Ich denke, um eine gute Genauigkeit (NSTimer feuern kann ausgeschaltet werden, indem so viel als 100ms und Fehler summieren sich), sollten Sie notieren Sie sich das Datum, an dem der countdown begann, und legte es in einem anderen ivar:
Dann können Sie ein timer feuern in regelmäßigen (hier 1 Sekunde) Abständen ruft eine Methode auf die Klasse wiederholt
Und in dieser Methode überprüfen Sie die verstrichene Zeit gegen den gesamten countdown-Zeit und update der Schnittstelle
Das ist ein großer Auftrag. Aber starten Sie mit kleinen Schritten. Sie müssen erstellen Sie eine Methode in Ihrer Klasse, die, wenn Sie aufgerufen wird (alle N Sekunden), wird die Aktualisierung der Etiketten, die Sie wollen, aktualisiert. Dann vereinbaren Sie einen timer zum aufrufen dieser Methode werden alle N Sekunden.
Gibt es mehrere timer-Variante Sie verwenden könnte, aber für diesen Fall die meisten straight-forward ist wahrscheinlich NSTimer scheduledTimerWithTimeInterval:Ziel:Wähler:userInfo:wiederholt:.
Schreiben Sie Ihre Methode, um zu schauen, wie
- (void)timerFireMethod:(NSTimer*)theTimer
und den Wahlschalter für die timer-Methode oben ist@selector(timerFireMethod:)
.