2011-09-28 5 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를 숨기고 다시 표시하도록 요청할 수 있습니까? –

1

실행 루프 tickery로이 작업을 수행 할 수 있습니다. 자세한 내용은 this answer을 참조하십시오.

관련 문제