2010-06-22 9 views
5

Je suis nouveau à travailler avec des minuteurs sur le iPhone et aurait besoin de soutien.Appeler une méthode NSTimer

J'ai une méthode comme ci-dessous qui prend l'heure et mettre à jour un UILabel dans mon userinterface. J'ai aussi un NSTimer qui appelle cette méthode une fois par seconde (je montre seulement les heures et les minutes). Cela fonctionne très bien, sauf pour la première seconde, l'application est en direct (comme je comprends, il faut une seconde avant que le timer appelle la méthode).

Je voudrais appeler ma méthode de viewDidLoad, mais comment puis-je fournir les bons arguments? Ou y a-t-il une meilleure façon de faire cela?

// 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; 
} 

Appréciez tout ce qui pourrait me diriger dans la bonne direction.

Répondre

2

Dans votre méthode, vous n'utilisez pas la variable timer à droite? Alors, pourquoi appeler simplement [self updateTime:nil]. Cela devrait fonctionner

+0

Oui, vous avez raison. Une solution simple et soignée. Testé et fonctionne bien. Merci! Semble aussi être une solution avec "feu" que vous pouvez déclencher l'événement de minuterie, mais je n'ai pas eu le temps de le tester pour le moment. – Structurer

2

Une option de plus ... vous pouvez faire:

[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

Merci Horace. Je pense que je vais aller pour la solution vodkhangs bien. – Structurer

Questions connexes