首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何清除重用的自定义UITableViewCell中包含的WKWebview?

如何清除重用的自定义UITableViewCell中包含的WKWebview?
EN

Stack Overflow用户
提问于 2016-10-27 21:48:24
回答 1查看 932关注 0票数 2

我有一个将我的自定义UITableViewCell出队的UITableView。UITableViewCell包含一个WKWebView。在cellForRowAtIndexPath中,我设置了WKWebView应该加载的url,然后webview开始加载页面。问题是单元格的数据有时会显示“旧的”数据,而新的url仍然被加载。

我首先尝试加载about:blank,我也尝试了webView.loadHTMLString("", baseURL: nil),但它不起作用,因为它是一个异步操作。

以下是我的代码片段。

代码语言:javascript
运行
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: MyTableViewController.cellIdentifier, for: indexPath) as! MyTableViewCell
    cell.url = data[(indexPath as NSIndexPath).row]
    return cell
}

在MyTableViewCell中,我立即开始加载html。loadHTML(in:,forUrl:)是将url加载到webview中的私有函数。

代码语言:javascript
运行
复制
var url: String? {
    didSet {
        loadHTML(in:webView!, forURL:url)
    }
}

如果有人知道如何正确地做到这一点,我将非常感激。我看到的一些建议包括,隐藏webView,直到它完成加载。实际上,我想让我的用户看到加载的进度。

我不认为不将UITableViewCell出队是个好主意。(该单元格还包含其他控件。)我现在能想到的最好的方法就是删除WKWebView,然后重新添加它。

EN

回答 1

Stack Overflow用户

发布于 2016-10-27 23:16:51

只要内容没有被重新加载(我猜你可以用wk委托didFinishNavigation检查它),用一个空的视图覆盖它会怎么样呢?你可以省略加载,而不是调整一些约束。我知道这很麻烦,但是如果你想找一个快速的解决方案,可能会有用。

不能确定它的性能有多好,但可以肯定的是,它不涉及与删除和重新添加webview相反的重新计算约束

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40286328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档