首页 > 解决方案 > Swift 4 WebkitView URL 更改没有发挥作用

问题描述

我有以下情况。

我正在使用 WebkitView 来显示一些会话信息。在大多数地方,它是在 ViewController 生效时生成的,但我有一个特定的视图,我必须在用户交互时重新加载它,按钮更改为下个月或上个月。

我有以下代码:

// This is my connection to the storyboard element
@IBOutlet weak var areaNotasMes: WKWebView!

之后,我有一个执行 URL 处理的函数:

func actualizarUrlNotasMes(fechaNueva: Date) {
    let formateadorAdicional = DateFormatter()
    formateadorAdicional.dateFormat = "yyyyMM"

    let url = URL(string: "https://myurl/\(formateadorAdicional.string(from: fechaNueva))")

    areaNotasMes.load(URLRequest(url: url!))
}

我有一个按钮事件,它使用带有下一个 YEAR_MONTH 组合的函数,如下所示:

@IBAction func mesSigPressed(_ sender: UIButton) {
    // Some more code to get the fechaActual variable
    actualizarUrlNotasMes(fechaNueva: fechaActual)
    // Some more code
}

所以,基本上发生的事情是它在我第一次打开 ViewController 时加载,但是当我单击按钮更改为下个月时,日期会更改,正确生成并传递给函数。它生成正确的 URL,但是当areaNotasMes.load(...)函数运行时,WebKitView 上没有任何刷新。我尝试添加areaNotasMes.reload(),但它也没有做任何事情。每次更改 URL 时,我是否都必须销毁并重新创建 WebKitView?还是我没有正确处理 URL 更改?

此外,控制台会不时弹出其中一些消息,但并非总是如此:

[BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C5.1:2][0x7fea2d201de0] get output frames failed, state 8196
TIC Read Status [5:0x0]: 1:57

标签: swiftios11ios12

解决方案


不,您不需要在更改 URL 时重新初始化 web 视图。我无法根据您提供的信息说明问题。我建议您将 ViewController 设置为navigationDelegatewebview 并实现这些方法来尝试诊断问题:

func webView(WKWebView, didStartProvisionalNavigation: WKNavigation!)

func webView(WKWebView, didFail: WKNavigation!, withError: Error)
//Called when an error occurs during navigation.

 func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error)

文档在这里


推荐阅读