2016-11-12 7 views
0

문제가 있습니다.
내 tableviewcontroller에서 MBProgressHUD를 사용합니다.
나는 MBropgressHUD 애니메이션 애니메이션을로드하고 아무 것도 만질 수없고 테이블 뷰에 표시 할 서버 데이터를 기다릴 수 있기를 바랍니다.
허드가 hideAnimated 될 때까지 화면을 일시 중지하고 싶습니다.
로딩 할 때 화면을 일시 중지하기 위해 MBProgressHUD를 사용하는 방법

고마워요!

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.listTableView animated:YES]; 
hud.label.text = @"Loading"; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    [self getInfo:nil]; 
}); 
hud.userInteractionEnabled = YES; 
[hud hideAnimated:YES afterDelay:2]; 
+0

당신이 요청에 대한 콜백이 있습니까? 거기서'[hud hideAnimated : YES]'해야합니다. – alexburtnik

+0

어디서 일시 중지 하시겠습니까 ??? – User511

답변

0

당신이 경우 [hud hideAnimated:YES afterDelay:2]을 사용하지 않아야합니다 :

내 코드입니다. dispatch_after에도 아무런 의미가 없습니다.

귀하의 요청이 실제로는 (0.1 초) 완료 될 수 있으며 허드가 또 다른 1.9 초 동안 계속 표시 될 수 있습니다. 또는 30 초 또는 설정 한 시간 초과와 같이 아주 오랜 시간 동안 보류 상태로있을 수 있으므로 코드를 실제로 표시해야 할 때 코드가 숨겨집니다.

요청을 완료하면 완료 블록 (또는 대리 메서드)을 호출해야합니다.

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
hud.label.text = @"Loading"; 
[self getInfoWithSuccess:^{ 
    [hud hideAnimated:YES]; 
    //your code here   
} failure:^(NSError *error) { 
    [hud hideAnimated:YES]; 
    //show error message if needed 
}]; 

요청 방법 자체 :

- (void) getInfoWithSuccess: (void(^)()) success failure: (void(^)(NSError *)) failure { 
    //do async request here and call success or failure block when it's finished 
}