我有一个UITableViewController,它正在从NSURLConnection加载数据:
NSURL *url = [NSURL URLWithString:@"http://url.now"];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
if ([data length] > 0 && error == nil){
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser parse];
}
else if (error != nil){
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"No internet connection" message:@"Content." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:true];
}
}];
解析结束后,将调用reloaddata方法。但是,在加载应用程序时,不会显示UITableView的内容。当我滚动一点时,它立即可见。重新加载没有问题。
如何解决?
解决了。将tableView reloadData更改为此:
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
它就像一个魅力。感谢您的所有回答和评论。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句