在数据加载时显示活动指示器的麻烦

时间:2011-05-02 16:20:03

标签: iphone uiactivityindicatorview viewdidload viewdidappear

我觉得我的问题有一个非常简单的解决方案,但到目前为止我没有成功......我想加载我的初始.xib文件(提前退出default.png启动画面),这样我可以在加载我的html数据时显示一个活动指示器,并设置我的xib文件创建的文本标签字段。

不幸的是,当我执行下面的代码时,我会显示我的default.png图像,直到从每个网站加载所有数据...为了首先显示我的mainView,我可以更改什么,然后启动活动指示器,加载我的HTML数据,并在我的mainView中设置文本标签?

@implementation MainViewController
- (void)viewDidLoad {
[super viewDidLoad];

[activityIndicator startAnimating];

[self runTimer];

}

- (void)viewDidAppearBOOL)animated {

[super viewDidAppear:animated];

[self loadHTMLData1];

[self loadHTMLData2];

[self loadHTMLData3];

[self loadHTMLData4];

[activityIndicator stopAnimating];

}
...

1 个答案:

答案 0 :(得分:1)

这与iOS如何更新ui有关。当你打电话

[activityIndicator startAnimating];

这并不意味着立即开始制作动画,这意味着您下次更新显示时会告诉ui,开始制作动画。

所有这些更新都发生在主线程上(如果你还没有创建一个线程,你已经在主线程上了)所以如果你做了其他需要很长时间的事情,它会做到这一点在更新显示之前

有几种方法可以解决这个问题,它们都涉及制作另一个在后台运行的线程。

查看NSOperation(以及NSOperationQueue) - 这将让您排队iOS将在后台运行的各个任务。然后,当它们完成后,您可以再次更新显示屏并关闭活动指示器。

NSOperationQueue tutorials遍布google:)

希望有所帮助。

相关问题