Anzeigen eines Timers für eine iOS-app, dass weiterhin zwischen den view-Controllern
Ich habe versucht, einen timer, um zu zeigen, in der linken unteren Ecke meiner app durch die Verwendung einer NSTimer
, und die "verstrichene Zeit" zeigen, wie UILabel
auf der linken unteren Ecke, aber es wurde nicht für mich arbeiten.
-(void)viewDidLoad
{
NSTimer *aTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(aTime) userInfo:nil repeats:YES];
}
-(void)aTime
{
NSLog(@"....Update Function Called....");
static int i = 1;
Label.text = [NSString stringWithFormat:@"%d",i];
i++;
}
Den timer tatsächlich funktioniert, aber ich kann es nicht mehr ausgelöst werden, die durch eine Taste. Ich versuche, den timer fortsetzen und nicht neu bei 1, wenn es in den nächsten storyboard/xib-Datei.
Kannst du bitte deinen code, damit wir es anschauen, um festzustellen, warum es nicht funktioniert?
Warum es nicht funktioniert?
Tut mir Leid. Ich war das Experimentieren mit verschiedenen codes versucht, um zu sehen, wenn ich könnte die Dinge arbeiten, so dass ich nicht wirklich haben, einen code zu posten eine Weile zurück, denn Sie waren nur Entwürfe. Aber ich stellte den code, den ich jetzt verwende. Hoffe, das hilft! Danke.
nun, was ist das Problem ? Timer funktioniert nicht oder brauchen, um es zu implementieren button klicken ?
Wenn Sie wollen, dass es ausgelöst durch einen Knopf, dann stellen Sie den timer-erstellen code in der Schaltfläche Methode, nicht viewDidLoad.
Warum es nicht funktioniert?
Tut mir Leid. Ich war das Experimentieren mit verschiedenen codes versucht, um zu sehen, wenn ich könnte die Dinge arbeiten, so dass ich nicht wirklich haben, einen code zu posten eine Weile zurück, denn Sie waren nur Entwürfe. Aber ich stellte den code, den ich jetzt verwende. Hoffe, das hilft! Danke.
nun, was ist das Problem ? Timer funktioniert nicht oder brauchen, um es zu implementieren button klicken ?
Wenn Sie wollen, dass es ausgelöst durch einen Knopf, dann stellen Sie den timer-erstellen code in der Schaltfläche Methode, nicht viewDidLoad.
InformationsquelleAutor user1677210 | 2012-09-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Implementierung der timer-Aktion auf den Knopf drücken, müssen Sie schreiben es auf ein
IBAction
Methode wie:Für die Speicherung des vorherigen Werts, die Sie verwenden können,
NSUserDefaults
oder eine SQLite-Datenbank. Für diesen Zweck, die ich werde vorschlagenNSUserDefaults
.Ändern Sie die "aTime" - Methode wie:
Nein, nur ersetzen Ihre Zeit in der ersten view-controller
Aber wenn ich dann wechseln würde, um die nächste Ansicht, das label mit der Zeit verschwinden würden
wo auch immer Sie sind, mit den gleichen timer für die Anzeige der Zeit, die Sie benötigen, um dieses
Okay ich habe nur, dass, aber, wenn es sich bewegt, um die nächste Ansicht der timer Stoppt, lassen Sie uns sagen, ob die Letzte Ansicht dauerte 5 Sekunden, es würde nur zeigen, "5" in die nächste Ansicht.
InformationsquelleAutor Midhun MP
Ich denke, das problem ist, dass die Methode
aTime
ist in Ihrer view-controller, wenn Sie tritt in einer anderen Ansicht, diese view-controller wird freigegeben, und Sie können nicht ausführen selector aTime mehr.daher schlage ich vor, dass Sie Ihre
aTime
Methode undi
um ein singleton(oder ein beliebiges Objekt, das nicht freigegeben werden, wenn Sie geben Sie eine andere Ansicht), und setzen Sie die singleton-als Ziel für den timer.auch zu halten, sollten Sie folgenden code in deine view-controller, so dass Sie aktualisieren können Ihr Etikett ordnungsgemäß, wenn Sie kam zurück zu dieser Ansicht.
bessere Wahl:
Können Sie erklären, die ich als eine Eigenschaft singleton, und fügen Sie dann ein Beobachter auf i, dann erhalten Sie Ihr Etikett aktualisiert auf Zeit.
call startTimer, wenn Sie wollen, zählen die Zeit.
singleton:
den view-controller:
Sie müssen nicht auf ein singleton-dann können Sie nur ich als Eigenschaft in Ihrer Anwendung zu delegieren.
InformationsquelleAutor CarmeloS