2

UITableViewオンタイマーを更新しました。配列のデータを変更してから、 を呼び出します-[UITableView reloadData]。しかし、テーブルをスクロールするか、タブ バーでタブを切り替えるまで、何も変更されません。何が起こっていますか?どうすればこれを回避できますか?

4

2 に答える 2

4

問題はその中にありました:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
    self.newList = [self loadData];
    [self.delegate list:self didUpdate:self.newList];
});

デリゲート呼び出しはバックグラウンドスレッドで行われました。UIを更新する場合は、メインスレッドで行う必要があります。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
    self.newList = [self loadData];

    dispatch_async(dispatch_get_main_queue(), ^{
        [self.delegate list:self didUpdate:self.newList];
    });
});
于 2012-10-11T19:52:12.660 に答える
4

メインスレッド以外でテーブルをリロードしない

于 2012-10-11T19:44:58.070 に答える