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