为什么addSubview异步加载视图

时间:2010-05-13 13:14:23

标签: iphone objective-c cocoa-touch uikit

我想要在用户点击按钮时加载UIView。碰巧有一些数据处理也会发生 之后我调用addSubview,它涉及解析从Web检索的XML文件。问题是如果首先调用addSuview,则直到数据处理甚至之后才会显示视图。我想我在这里遗漏了什么,有人可以帮忙吗?

代码:我有一个“正在加载...”视图我正在添加为自定义模式(意思是我没有使用modalViewController)。此操作链接到navigationController中的按钮。

- (IBAction)parseXml:(id)sender {
      LoadingModalViewController *loadingModal = [[LoadingModalViewController alloc] initWithNibName:@"LoadingModalViewController" bundle:nil];
      [navigationController.view addSubview:loadingModal.view];
      [xmlParser parse];
}

2 个答案:

答案 0 :(得分:0)

如果您正在主线程上进行处理,它将阻塞主线程直到完成,这意味着您的UI将无响应,并且在主线程恢复之前不会更新。

您需要使用NSOperation或现有的异步API在后台线程上执行XML处理,并在完成后更新视图。

很难获得更多帮助,并且在不遗憾地看到您的代码的情况下更好地了解出了什么问题。

答案 1 :(得分:0)

你好!如果您正在寻找一个简单的解决方法:

[self showLoadingScreen]
[self performSelector:@selector(methodToDoWork) withObject:nil afterDelay:0.3];

但是如果可以的话,最好让methodToDoWork异步。