为什么addSubview异步加载视图

问题描述:

我有一个UIView,我想在用户点击一个按钮时加载。碰巧还有一些数据处理发生在之后我调用了addSubview,它涉及到解析从网上检索到的XML文件。问题是直到数据处理后才显示视图甚至如果首先调用addSuview。我想我在这里错过了一些东西,谁能帮忙?为什么addSubview异步加载视图

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

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

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

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

然而,如果可以的话,你最好使methodToDoWork异步。

如果您在主线程上做你的处理,它会阻止主线程,直到其完成的,这意味着你的用户界面将变得没有反应,直到主线程的简历不会更新。

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

不幸的是,它很难得到更多的帮助,并在不看到代码的情况下更好地了解发生了什么问题。

+0

嗨,谢谢你的回应。我发布了一个我想要做的事情的简单版本。但我有几个问题。 1)主线程怎么没有被addSubview阻塞,直到加载视图之后才会执行[xmlParser parse]? 2)在子视图viewDidLoad方法中处理数据会起作用/是一个坏主意吗? – moshe 2010-05-14 04:15:57