好的,我希望我在这里遗漏了一些基本的东西——我不是这方面的专家。如果没有示例代码,它应该是不言自明的:我解析了一个 Web 托管的 xml 文件,该文件包含要在 tableView 中显示的标题列表以及在选择单元格时传递给 webView 的关联 URL。解析发生在 tableView 到字典中。如果我在主线程上解析它会很好地工作,但如果信号很差,我担心会挂起 UI。因此,我按照此处的示例将解析调用包装在调度队列中,现在它显示了一个空表。但是,如果我返回视图层次结构并再试一次(它嵌入在导航控制器中),那么它就可以工作,我的表已经完全填充。我假设通过使用辅助线程以某种方式在填充内容数组之前创建表。我该如何解决这个问题?谢谢!安德鲁
问问题
386 次
2 回答
1
实现的- (void)parserDidEndDocument:(NSXMLParser *)parser
委托方法NSXMLParser
。并从该方法调用reloadData
您的 tableView。
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
dispatch_sync(dispatch_get_main_queue(), ^{
[yourTable reloadData];
});
}
于 2012-12-26T09:15:10.320 回答
0
如果您在调度队列中进行削减,则必须更新主队列上的 UI。
我正在做类似的事情。这是我的代码:
dispatch_queue_t imgDownloaderQueue = dispatch_queue_create("imageDownloader", NULL);
dispatch_async(imgDownloaderQueue, ^{
NSString *avatarUrlString = [avatarImageDictionary objectForKey:@"url"];
avatarImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:avatarUrlString]]];
dispatch_sync(dispatch_get_main_queue(), ^{
id asyncCell = [self.tableView cellForRowAtIndexPath:indexPath];
[[asyncCell avatarImageView] setImage:avatarImage];
});
});
于 2012-12-26T09:13:21.417 回答