2010-05-13 66 views
3

我有一個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]; 
} 

回答

0

你好!如果你正在尋找一個簡單的解決方法:

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

然而,如果可以的話,你最好使methodToDoWork異步。

0

如果您在主線程上做你的處理,它會阻止主線程,直到其完成的,這意味着你的用戶界面將變得沒有反應,直到主線程的簡歷不會更新。

您需要使用類似NSOperation或現有的異步API之類的代碼在後臺線程上執行XML處理,並在完成後更新視圖。

不幸的是,它很難得到更多的幫助,並在不看到代碼的情況下更好地瞭解發生了什麼問題。

+0

嗨,謝謝你的迴應。我發佈了一個我想要做的事情的簡單版本。但我有幾個問題。 1)主線程怎麼沒有被addSubview阻塞,直到加載視圖之後纔會執行[xmlParser parse]? 2)在子視圖viewDidLoad方法中處理數據會起作用/是一個壞主意嗎? – moshe 2010-05-14 04:15:57