在我的ios应用程序中我使用GCD调用在后台线程中下载一些数据,但它没有立即更新UI,我应该触摸屏幕来更新UI,以下是我的代码,我是否知道为什么表视图没有重新加载虽然我想在主线程中更新
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
//background processing goes here
// Downloading JSON data from Web APIs
dispatch_async(dispatch_get_main_queue(), ^{
//update UI here
//Reloading my table view
[objTableView reloadData];
});
});
我也尝试过runOnMainQueueWithoutDeadlocking
代替dispatch_async(dispatch_get_main_queue()
,但没有用{/ p>
void runOnMainQueueWithoutDeadlocking(void (^block)(void))
{
if ([NSThread isMainThread])
{
block();
}
else
{
dispatch_sync(dispatch_get_main_queue(), block);
}
}
答案 0 :(得分:1)
在用户决定更改问题代码之前给出答案
根据Apple Documentation for UITableView
,没有名为reload
的方法应该是reloadData
。因此,您需要根据Apple Documentation around UITableView reloadData:
将行[objTableView reload];
更改为[objTableView reloadData];
。另外,如果您结帐How to Reload a UITableView While I am Looking at It和Reload data of UITableView in background,也可以说[objTableView reloadData];
。
答案 1 :(得分:0)
尝试放
yourtableviewdelegate.layoutIfNeeded()
重新加载tableview后。