一次又一次地更新UIVIew

时间:2009-10-11 23:32:27

标签: iphone uiview

我正在创建一个简单的iPhone应用程序,其唯一功能是永久更新UIView(直到它退出)。

我在applicationDidFinishLaunching和viewDidLoad:

中尝试了这个
while(1) {  
    // update view here  
}

但这不起作用 - 应用程序永远不会完成加载。我确信这有一个简单的解决方案,我只是不知道它是什么。

另外:理想情况下,这个过程应该消耗很少的资源。

2 个答案:

答案 0 :(得分:6)

你不能拥有像这样的while (1)语句,因为它不允许viewDidLoad返回,你的应用程序永远不会得到任何其他调用,如点击处理,屏幕绘制更新等。

在viewDidLoad中,使用以下方式设置计时器任务:

updateTimer = [NSTimer scheduledTimerWithTimeInterval: kUpdateTimeInterval target:self selector:@selector(updateView) userInfo:nil repeats:YES];

并且有一个名为updateView的方法实际上进行了更新。您可以使用updateView而不是setNeedsDisplay来触发调用视图类的-drawRect方法,并在那里进行实际绘制。

现在最终发生的事情是你的viewDidLoad会设置一个重复的任务,并且每个kUpdateInterval都会更新你的视图。

答案 1 :(得分:1)

您可以在显示的数据发生变化时调用其-setNeedsDisplay方法,而不是一直更新视图。