2012-03-24 10 views
0

私はMBProgressHUDで遊んでいます。 ViewController(テーブルビュー)でworflowは、そのような移行:IBActionは、2つの異なるテーブル 2.1切り替えることが呼び出される)MBProgressHUD表示されません

1)機能reloadAllMonth 2.2)新しいテーブルのデータの配列を初期化する(呼び出される)MBProgressHUD * HUDはHUDが消えるはずです)reloadAllMonthは 4を終了する) 3を表示する必要がある

私の現在のコード:何が起こるか

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

     //sparing you the code that determins where the tap occured 

     HUD = [[MBProgressHUD alloc]initWithFrame:self.view.frame]; 
     [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
     [self reloadAllMonth]; 
     allMonthIsActive = YES; 
     [MBProgressHUD hideHUDForView:self.view animated:YES]; 

// some other code table reload etc. 
} 

- >関数touchesbeganが呼び出される は - >何も3~4秒(ローディング時間) ために起こりません - >新しいテーブル

質問ポップアップ表示:なぜHUDが表示されませんの?どこで私は間違えましたか ?

答えて

2

あなたは両方のショーを持っているし、同じスレッドで隠すことができない、これは私がどうなるのかです:

-(void)reloadStuff 
{ 
    [self reloadAllMonth]; 
    allMonthIsActive = YES; 
    [MBProgressHUD hideHUDForView:self.view animated:YES]; 
    isLoading = NO; 
} 

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    //sparing you the code that determins where the tap occured 

    if (isLoading) 
     return; 
    isLoading = YES; 
    [MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
    [self performSelectorInBackground:@selector(doStuff) withObject:nil]; 
} 

また、あなたは、あなたがそれを使用していない、IVAR HUDを削除することができます。

そしてNOへのviewDidLoadでisLoadingを初期化することを忘れないでください:

isLoading = NO; 

幸運!

+0

私のコードをあなたの提案に変更しましたが、何も変更しません。 HUDはまだ表示されません。質問コードを新しいコードに更新しました。 –

+0

Answer – Zalykr

+0

これは私の絶対的な最初のアイデアとコードでした。問題は、バックグラウンドスレッドでreloadAllMonthメソッドが実行されることです。したがって、メインスレッドが実行され、テーブルビューの描画が開始されます。テーブルビューには、reloadAllMonthにロードするデータが必要です。データが利用可能になる前にテーブルが描画されるので、アプリがクラッシュする=) –

0

サーバーから何かを取得していますか? もしそうなら、あなたは同期リクエストか非同期かを確認してください。非同期要求は、従うのが最善です。 このようにMBProgressBarを処理します。

[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      //Any UI updates should be made here . 
       [MBProgressHUD hideHUDForView:self.view animated:YES]; 
     }); 
関連する問題