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

Ios -[UITableView reloadData]仅在滚动后显示更改,ios,uitableview,ios5.1,Ios,Uitableview,Ios5.1,我在计时器上更新UITableView。我更改数组中的数据,然后调用-[UITableView reloadData]。但在我滚动表格或切换选项卡栏中的选项卡之前,不会更改任何内容。发生了什么事?如何避免这种情况?不要在非主线程上重新加载表问题在于: dispatch\u async(dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u DEFAULT,0),^(void){ self.newList=[self-loadDa

我在计时器上更新
UITableView
。我更改数组中的数据,然后调用
-[UITableView reloadData]
。但在我滚动表格或切换选项卡栏中的选项卡之前,不会更改任何内容。发生了什么事?如何避免这种情况?

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

问题在于:

dispatch\u async(dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u DEFAULT,0),^(void){
self.newList=[self-loadData];
[self.delegate list:self-diddupdate:self.newList];
});
委托调用在后台线程上。如果您想更新UI,您应该在主线程上执行

dispatch\u async(dispatch\u get\u global\u queue(dispatch\u queue\u PRIORITY\u DEFAULT,0),^(void){
self.newList=[self-loadData];
dispatch\u async(dispatch\u get\u main\u queue()^{
[self.delegate list:self-diddupdate:self.newList];
});
});

是否在主屏幕上调用重新加载数据?