UITableView第一次不显示,仅在滚动时显示

Mat*_*164 4 asynchronous uitableview ios

我有一个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];
    }
}];
Run Code Online (Sandbox Code Playgroud)

解析结束时,将调用reloaddata方法.但是当加载应用程序时,UITableView的内容不会显示.当我滚动一下时,它会立即显示出来.重新加载没问题.

怎么解决这个问题?

Mat*_*164 8

解决了它.将tableView reloadData更改为:

 dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
 });
Run Code Online (Sandbox Code Playgroud)

它就像一个魅力.感谢所有的答案和评论.