我觉得我的问题有一个非常简单的解决方案,但到目前为止我没有成功......我想加载我的初始.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];
}
...
答案 0 :(得分:1)
这与iOS如何更新ui有关。当你打电话
[activityIndicator startAnimating];
这并不意味着立即开始制作动画,这意味着您下次更新显示时会告诉ui,开始制作动画。
所有这些更新都发生在主线程上(如果你还没有创建一个线程,你已经在主线程上了)所以如果你做了其他需要很长时间的事情,它会做到这一点在更新显示之前。
有几种方法可以解决这个问题,它们都涉及制作另一个在后台运行的线程。
查看NSOperation(以及NSOperationQueue) - 这将让您排队iOS将在后台运行的各个任务。然后,当它们完成后,您可以再次更新显示屏并关闭活动指示器。
NSOperationQueue tutorials遍布google:)
希望有所帮助。