就像您自己正确说loadString
的那样,正是出于这个目的返回WKNavigation对象。因此,只需为自己创建一个字典,即可将该WKNavigation对象与完成处理程序相关联,该处理程序将在调用时存储:
var navs = [WKNavigation : () -> ()]() func loadString(_ s:String, completionHandler:@escaping ()->()) { if let nav = wkWebView?.loadHTMLString(s, baseURL:nil) { self.navs[nav] = completionHandler } }
现在,作为WKWebView的navigationDelegate
,当您听到页面已加载时,可以调用其相应的完成处理程序:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { if let f = self.navs[navigation] { f() } }