#ios #nstimer
#iOS #nstimer
Вопрос:
В моем приложении я хочу использовать NSTimer для обновления моего экземпляра UIButton, но название моей кнопки не изменилось по истечении времени. Мой код здесь:
-(void)fireTimer{
self.leftTime = 30;
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerAction) userInfo:nil repeats:YES];
[self.timer fire];
}
- (void)timerAction
{
self.leftTime--;
NSLog(@"%d current runloop and mode is %@", self.leftTime, [NSRunLoop currentRunLoop].currentMode);
[self.customBtn setTitle:[NSString stringWithFormat:@"leftTime:%d", self.leftTime] forState:UIControlStateNormal];
if(self.leftTime == 0)
{
[self.customBtn setTitle:[NSString stringWithFormat:@leftTime :%d, self.leftTime] forState:UIControlStateNormal];
[self.timer invalidate];
}
}
И вывод NSLog правильный, когда self.TimeLeft == 0, моя кнопка может правильно изменить ее заголовок.
Кто-нибудь может сказать мне, в чем проблема? Спасибо!
Комментарии:
1. [запуск автоспуска]; в данном случае является избыточным. Это не причина вашей проблемы, это просто избыточно
2. Я думаю, это должно сработать при условии, что вы создали соответствующий IBOutlet для своей кнопки. Я сделал то же самое, используя UILabel, и это сработало для меня. Просто проверьте соединения для вашей кнопки.
3. Мой IBOutlet в порядке, я изменяю свой код, и при последнем запуске селектора таймера
4. Ваш fireTimer выполняется в основном потоке или фоновом потоке?
5. Мой viewcontroller не создал никакого потока или не выполнил какой-либо фоновый код.
Ответ №1:
Я выясняю проблему, я использую KVO для наблюдения за self.leftTimer, когда срабатывает таймер, я устанавливаю свою button.enable = НЕТ, поэтому он не может изменить заголовок, а когда self.leftTime == 0, моя button.enable = ДА. Моя небрежность. Спасибо всем.