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