- [UITableView reloadData]仅在滚动后显示更改

时间:2012-10-11 19:37:58

标签: ios uitableview ios5.1

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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];
    });
});