0

我觉得好像有一个非常简单的解决方案可以解决我的问题,但到目前为止我收效甚微......我想加载我的初始 .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];

}
...
4

1 回答 1

1

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

[activityIndicator startAnimating];

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

所有这些更新都发生在主线程上(如果您还没有创建线程,那么您已经在主线程上)所以如果您执行其他需要很长时间的操作,它会在更新 display 之前执行此操作。

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

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

谷歌上到处都是NSOperationQueue 教程:)

希望有帮助。

于 2011-05-02T21:03:27.897 回答