在我的应用程序中,我通过按下按钮异步调用方法。屏幕将切换到不同的视图控制器,这是一个表格视图。
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDownloadTask *task = [session downloadTaskWithRequest:request
completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error)
{
NSData *data = [[NSData alloc] initWithContentsOfURL:location];
NSArray *array = [NSJSONSerialization JSONObjectWithData:data
options:0
error:&error];
self.yearBucket = [NSMutableArray array];
for (NSDictionary * dict in array) {
Year *year = [[Year alloc ]init];
year.yearName =[dict objectForKey:@"Year"];
year.speeches = [dict objectForKey:@"Speeches"];
[self.yearBucket addObject:year];
}
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
...
问题是UI移动到空白表视图中,因为数据需要一些时间来加载。如何在下一个动态显示数据加载的屏幕上显示和提醒视图,一旦视图刷新回主线程,就可以将其解除。
答案 0 :(得分:0)
我建议您在加载数据时在视图上显示MVProgressHUD,然后执行[tableview reloadData]
以更新表格中显示的数据。
您可能还应该显示网络活动指示器。当网络连接正在发生时,这只是一种很好的做法。我认为,如果您的应用依赖互联网连接,那么在允许用户开始请求之前,您正在检查连接?