2

我更新了UITableView计时器。我更改数组中的数据,然后调用-[UITableView reloadData]. 但是在我滚动表格或在标签栏中切换标签之前,什么都没有改变。发生了什么?我怎样才能避免这种情况?

4

2 回答 2

4

不要在非主线程上重新加载表

于 2012-10-11T19:44:58.070 回答
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 回答