我有一个将我的自定义UITableViewCell出队的UITableView。UITableViewCell包含一个WKWebView。在cellForRowAtIndexPath中,我设置了WKWebView应该加载的url,然后webview开始加载页面。问题是单元格的数据有时会显示“旧的”数据,而新的url仍然被加载。
我首先尝试加载about:blank,我也尝试了webView.loadHTMLString("", baseURL: nil),但它不起作用,因为它是一个异步操作。
以下是我的代码片段。
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中的私有函数。
var url: String? {
    didSet {
        loadHTML(in:webView!, forURL:url)
    }
}如果有人知道如何正确地做到这一点,我将非常感激。我看到的一些建议包括,隐藏webView,直到它完成加载。实际上,我想让我的用户看到加载的进度。
我不认为不将UITableViewCell出队是个好主意。(该单元格还包含其他控件。)我现在能想到的最好的方法就是删除WKWebView,然后重新添加它。
发布于 2016-10-27 23:16:51
只要内容没有被重新加载(我猜你可以用wk委托didFinishNavigation检查它),用一个空的视图覆盖它会怎么样呢?你可以省略加载,而不是调整一些约束。我知道这很麻烦,但是如果你想找一个快速的解决方案,可能会有用。
不能确定它的性能有多好,但可以肯定的是,它不涉及与删除和重新添加webview相反的重新计算约束
https://stackoverflow.com/questions/40286328
复制相似问题