无法使用NSTimer更新UI

时间:2014-07-04 03:27:11

标签: 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 时,我的按钮可以正确更改它的标题。

enter image description here

有人可以告诉我这是什么问题吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我发现问题,我用KVO观察self.leftTimer,当计时器触发时,我设置了我的button.enable = NO,所以它不能改变标题,当self.leftTime == 0时,我的button.enable = YES。我不小心。谢谢大家。