我遇到以下情况。
我正在使用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?还是我无法正确处理网址更改?
此外,控制台有时会不定期地弹出其中一些消息:
[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
答案 0 :(得分:0)
否,更改URL时无需重新初始化Web视图。您提供的信息无法说明问题。我建议您将ViewController设置为Webview的navigationDelegate
并实施以下方法来尝试诊断问题:
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)
文档here
答案 1 :(得分:0)
我认为我实际上以最随机的方式解决了这个问题。我以为也许有一些重装功能(.reload()
除外),所以使用语法的自动完成功能,我想到了以下命令:
areaNotasMes.reloadInputViews()
显然.reloadInputViews()
是从UIView
继承的void函数,当对象是第一响应者时,该函数会更新自定义输入和附件视图。您可以在此处检查它:reloadInputViews()
尽管确实按预期工作并刷新了WebKitView信息,但它确实发送了一些Error Domain=NSURLErrorDomain Code=-999 "(null)"
。
希望这对其他人有帮助。