7

UIView オブジェクトを作成し、それを UITableView のデータ ソースに挿入し、UITableView で reloadData を呼び出す別のスレッドを取得しました。ただ、別スレッドなので直接 reloadData を呼べないので、メインスレッドにやらせる必要があるのですが…どうやってメインスレッドにやらせるのですか?

ありがとう

4

3 に答える 3

21
[self.tableView performSelectorOnMainThread:@selector(reloadData)
                                 withObject:nil
                              waitUntilDone:NO];
于 2011-10-27T09:57:38.673 に答える
7

非同期ディスパッチを使用できます。このメソッドを使用すると、performSelectorOnMainThread を使用するメソッドではなく、ワーカー スレッドをインライン コードのブロックにマーシャリングできます。

dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableview reloadData];
});'
于 2015-07-25T21:23:42.820 に答える
0

このようなものはどうですか?(コンパイルできないかもしれません、私はそれを打ち込んでいます)

- (void) callReloadData
{
    if ([NSThread isMainThread]) {
        @synchronized (self.tableView) {
            [self.tableView reloadData];
        }
    } else {
        [self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
    }
}
于 2011-10-27T09:59:00.150 に答える