Вызов метода NSTimer - PullRequest
       3

Вызов метода NSTimer

5 голосов
/ 22 июня 2010

Я новичок в работе с таймерами на iPhone и мне нужна поддержка.

У меня есть метод, описанный ниже, который требует времени и обновляет UILabel в моем userinterface. У меня также есть NSTimer, который вызывает этот метод раз в секунду (я показываю только часы и минуты). Это работает просто отлично, за исключением первой секунды, когда приложение работает (как я понимаю, это займет одну секунду, прежде чем timer вызовет метод).

Я хотел бы вызвать свой метод из viewDidLoad, но как я могу предоставить правильные аргументы? Или есть лучший способ сделать это?

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

Цените все, что укажет мне правильное направление.

Ответы [ 2 ]

2 голосов
/ 22 июня 2010

Еще один вариант ... вы можете сделать:

[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];
2 голосов
/ 22 июня 2010

В вашем методе вы не используете переменную таймера, верно? Итак, почему просто позвоните [self updateTime:nil]. Это должно работать

...