通过计时器更新UILabel不起作用

时间:2011-07-28 07:49:21

标签: objective-c

我有带标签的UIView,它显示秒表的时间。我从Timer方法设置标签。以下是代码:

  ivarTimer = [NSTimer scheduledTimerWithTimeInterval:1.0/10.0
     target:self
     selector:@selector(updateTimer)
     userInfo:nil
     repeats:YES];

我的更新方法如下所示:

  - (void)updateTimer {
     ...
     self.myLabel.text = @"someChangedStr";
  }

效果很好。但是在视图中我有UITableView,如果我滚动TableView,self.myLabel.text会停止更新。我应该使用线程还是其他东西?

1 个答案:

答案 0 :(得分:1)

您可以在另一个线程上运行计时器,但必须始终在主线程上执行UI更新。 但是,请尝试将NSTimer添加到UITrackingRunLoopMode,以便在跟踪窗口上的触摸时仍然会触发。

[[NSRunLoop mainRunLoop] addTimer:ivarTimer
                          forMode:UITrackingRunLoopMode];