2016-11-12 1 views
0

問題があります。
テーブルビューコントローラーでMBProgressHUDを使用します。
私は、MBProgressHUDをアニメーション化してからユーザーが何も触れることができず、サーバーのデータがテーブルビューに表示されるのを待つことを望みます。
hud 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 
} 
関連する問題