UI 在 ios 中触摸屏幕后才更新
UI is not Updated until I touch the screen in ios
在我的 ios 应用程序中,我使用 GCD 调用在后台线程中下载一些数据,但它不会立即更新 UI,我应该触摸屏幕来更新 UI,以下是我的代码,我想知道为什么 table 视图没有重新加载,尽管我试图在主线程
中更新
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()
但是没用
void runOnMainQueueWithoutDeadlocking(void (^block)(void))
{
if ([NSThread isMainThread])
{
block();
}
else
{
dispatch_sync(dispatch_get_main_queue(), block);
}
}
尽量放
yourtableviewdelegate.layoutIfNeeded()
重新加载表视图后。
用户决定更改问题代码之前给出的答案
根据 Apple Documentation for UITableView
there is no method called reload
it should be reloadData
. So you need to change the line [objTableView reload];
to [objTableView reloadData];
as per the Apple Documentation around UITableView reloadData:
. Also if you checkout How to Reload a UITableView While I am Looking at It and Reload data of UITableView in background 这些也说是 [objTableView reloadData];
。
在我的 ios 应用程序中,我使用 GCD 调用在后台线程中下载一些数据,但它不会立即更新 UI,我应该触摸屏幕来更新 UI,以下是我的代码,我想知道为什么 table 视图没有重新加载,尽管我试图在主线程
中更新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()
但是没用
void runOnMainQueueWithoutDeadlocking(void (^block)(void))
{
if ([NSThread isMainThread])
{
block();
}
else
{
dispatch_sync(dispatch_get_main_queue(), block);
}
}
尽量放
yourtableviewdelegate.layoutIfNeeded()
重新加载表视图后。
用户决定更改问题代码之前给出的答案
根据 Apple Documentation for UITableView
there is no method called reload
it should be reloadData
. So you need to change the line [objTableView reload];
to [objTableView reloadData];
as per the Apple Documentation around UITableView reloadData:
. Also if you checkout How to Reload a UITableView While I am Looking at It and Reload data of UITableView in background 这些也说是 [objTableView reloadData];
。