iPhone UIView没有立即更新

时间:2010-07-07 10:25:09

标签: iphone

我的应用程序在单击时有一个按钮被禁用,显示活动指示器并执行后台任务。完成此任务后,回调会通过启用按钮并删除活动指示符来更新界面。我遇到的问题是任务正在完成回调函数执行但是在一段时间内活动监视器仍然在屏幕上,按钮看起来像是被禁用但可以再次单击它。谁能告诉我哪里出错了?

非常感谢!

1 个答案:

答案 0 :(得分:2)

是否可以在单独的线程中执行callback-method? 我问,因为任何对视图有影响的调用都应该在主线程上执行。

通过执行以下操作可以解决问题:

  1. 创建一个处理与UI相关的代码并在回调方法中调用的方法
  2. 必须在主线程上执行与UI相关的代码
  3. 看起来有点像这样:

    //gets called asynchronously when your operation has completed
    -(void)myCallbackHandler {
       [self performSelectorOnMainThread:@selector(updateUI) withObject:nil 
                                                          waitUntilDone:NO];
    }
    
    -(void)updateUI {
        [myActivityIndicatorView stopAnimating];
        [myButton setEnabled:YES];
    }