2010-06-22 28 views
5

Ich bin neu in der Arbeit mit Timern auf der iPhone und würde einige Unterstützung benötigen.Aufruf einer NSTimer-Methode

Ich habe eine Methode wie unten, die die Zeit dauert und ein UILabel in meinem userinterface aktualisieren. Ich habe auch eine NSTimer, die diese Methode einmal pro Sekunde aufruft (ich zeige nur Stunden und Minuten). Dies funktioniert gut, außer für die erste Sekunde ist die App live (wie ich es verstehe dauert es eine Sekunde, bevor die timer die Methode aufruft).

Ich möchte meine Methode von viewDidLoad aufrufen, aber wie kann ich die richtigen Argumente liefern? Oder gibt es einen besseren Weg, dies zu tun?

// Timer for updating time 
[NSTimer scheduledTimerWithTimeInterval:1.0f 
           target:self 
           selector:@selector(updateTime:) 
           userInfo:nil 
           repeats:YES]; 


-(void)updateTime: (NSTimer *) timer { 

    currentTime = [NSDate date]; 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    // display in 12HR/24HR (i.e. 11:25PM or 23:25) format according to User Settings 
    [dateFormatter setTimeStyle:NSDateFormatterShortStyle]; 
    NSString *currentTimeString = [dateFormatter stringFromDate:currentTime]; 
    [dateFormatter release]; 

    timeLabel.text = currentTimeString; 
} 

Schätzen Sie alles, was mich in die richtige Richtung weisen würde.

Antwort

2

In Ihrer Methode verwenden Sie die Timer-Variable nicht richtig? Also, warum rufen Sie einfach [self updateTime:nil]. Das sollte

+0

Ja, Sie haben Recht. Solch eine einfache und saubere Lösung. Getestet und funktioniert gut. Danke! Scheint auch eine Lösung mit "Feuer" zu sein, dass Sie das Timer-Ereignis auslösen können, aber ich hatte noch nicht die Zeit, es zu testen. – Structurer

2

Eine weitere Option arbeiten ... Sie tun können:

[NSTimer scheduledTimerWithTimeInterval:0.01f 
           target:self 
           selector:@selector(updateTime:) 
           userInfo:nil 
           repeats:NO];  

[NSTimer scheduledTimerWithTimeInterval:1.0f 
           target:self 
           selector:@selector(updateTime:) 
           userInfo:nil 
           repeats: YES]; 
+0

Danke Horace. Ich denke, ich werde für Vodkhangs Lösung obwohl gehen. – Structurer