webView导致tableview滞后

时间:2015-12-10 12:35:11

标签: ios swift uitableview webview

我正在开展一个项目。我已经实现了可扩展单元格,我在单元格上有一些信息,当我点击它时,它会展开显示描述。 我正在UIWebView中加载说明,因为我正在html格式JSON进行说明。

我遇到的问题是UITableView中的滚动是滞后的,我99%肯定是导致问题的UIWebView,因为我有其他的表格视图以及不可扩展的单元格,他们滚动得很顺利。

我想我可以通过不让开头的表加载html内容来解决问题,只在我选择的每个单元格的Didselect方法上加载它。

但是我很难完成这个。无论如何,我只能为1个特定的单元格加载UIWebView(在这种情况下只有我点击的单元格)。 任何帮助表示赞赏。 如果您认为有另一种方法可以解决这个问题,请随时提出建议。

提前致谢

PS:我在swift中查看了youtube的可扩展单元格教程,并且或多或少相同。

3 个答案:

答案 0 :(得分:1)

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
//Background Thread
NSData* data = [NSData dataWithContentsOfURL:@"YOUR URL"];
dispatch_async(dispatch_get_main_queue(), ^(void){
    //Run UI Updates
    [mWebView loadData:data MIMEType: @"text/html" textEncodingName: @"UTF-8" baseURL:nil];
});
});

答案 1 :(得分:0)

使用GCD,它将在后台运行UIWebview加载过程,并在加载时加载UIWebview

答案 2 :(得分:0)

Ok Guys vaibby是对的。谢谢大家的回复。

我使用过GCD,但是在错误的地方调用了它。 只是想让你知道问题已经解决了。 我所做的是作为第一步缓存UItableView的图像。 作为第二步和非常重要的一步,我将Async库实现到我的项目中,并在cellForRowAtIndexPath函数中使用它来调用Async.background中的webView(因此它在后台线程中绘制UIwebView),现在滚动工作正常应该如此。