1

私は単一のスレッドですべてを行っていましたが、非同期呼び出しに移行し始めたばかりなので、少し混乱しています。

私が望むのは、空のテーブルまたはテーブルがまったくないビューをロードすることです。非同期呼び出しがデータを取得している間、MBProgressHUD が表示されるはずです。次に、データが見つかると、HUD が消え、テーブルが更新されます。

私が今持っているのは、HUDが空のテーブルの下に表示されることを除いて、すべてが機能することです. これが最も関連性の高いコードです。

- (void)awakeFromNib
{
    [super awakeFromNib];
    [MBProgressHUD showHUDAddedTo:self.tableView animated:YES];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        self.dataController = [[StudyController alloc] initWithCredentials:email password:password];
        dispatch_sync(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:self.tableView animated:YES];
            [self.tableView reloadData];
        });
    });
}

基本的に何が起こっていると思いますが、非同期呼び出しの実行中にテーブルを正しくレンダリングしていたすべてのコードが実行され、HUD の上に空のテーブルが表示され、呼び出し後に reloadData に指示したときに再び表示されます。 . 初めて実行しないようにするにはどうすればよいですか?

ありがとう。

4

1 に答える 1