2012-10-11 29 views
2

我更新了定时器上的UITableView。我更改数组中的数据,然后致电-[UITableView reloadData]。但是,在滚动表格或切换标签栏中的选项卡之前,没有任何更改。发生了什么?我怎样才能避免这种情况?- [UITableView reloadData]仅在滚动后才显示更改

+1

你会在mainad上调用reloadData吗? – NeverBe

+0

@NeverBe谢谢。 – efpies

回答

4

不要重装上没有主线程

+7

另外:始终在主线上重新加载表格 – wxactly

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]; 
    }); 
}); 
相关问题