2011-09-28 46 views
1

我想在我的iPhone應用程序中顯示MBProgressHUD而不產生新線程。如何在不產生新線程的情況下在iPhone上顯示MBProgressHUD?

我有一套非常複雜的業務邏輯,有時(但並非總是)需要等待用戶輸入,並且在多個線程上運行最終一次要求多次輸入用戶輸入,從而導致瘋狂的錯誤。因此我寧願避免在主線程中運行任何東西。但是,由於這個約束,MBProgressHUD沒有顯示,因爲主線程被阻塞!通常我會創造我MBProgressHUD用下面的代碼:

[HUD showWhileExecuting:@selector(myWorkerMethod) onTarget:self withObject:nil animated:YES]; 

但我想用下面的代碼,而不會阻塞主線程:

HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
[self.view addSubview:HUD]; 
HUD.delegate = self; 
HUD.minShowTime = 0.0; 
HUD.labelText = @"some text"; 
[HUD show:YES]; 

有什麼想法?

回答

3

這個怎麼樣?

MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
HUD.labelText = @"Foo"; 
// code to execute synchronously 
[MBProgressHUD hideHUDForView:self.view animated:YES]; 
+0

不顯示,主線程需要做一個運行循環 – jjxtra

+0

是否有可能讓HUD隱藏HUD後,再次顯示了看法? –

1

比從未更好的遲到。你可以用一些運行循環的tickery來做到這一點。詳情請參閱this answer

相關問題