尝试在 Swift5 的 Web 视图中调用 js 函数时出错

Error when trying to call js function in web view on Swift5

我在浏览网页时遇到问题。

Web视图看起来正常,加载Web视图时启动的js函数调用没有问题。

当您尝试从其他地方调用函数时出现问题。我们找不到问题。

请求函数 其他Screen.swift

DispatchQueue.main.async {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let myWebView = storyboard.instantiateViewController(withIdentifier: "mainWebViewController") as! mainWebViewController
                            myWebView.sendToCode(jsonString)
}

WebView.Swift

 @IBOutlet var mainWebView: WKWebView!
...

    func sendToCode(_ result : String) {
        mainWebView.evaluateJavaScript("calljsfunc(\(result))", completionHandler: { (any, err) -> Void in
            print(any ?? "no any")
            print(err ?? "no Error")
        })
    }

'mainWebView.evaluateJavaScript' 部分发生错误。

Error is Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value

什么叫nil

但是我不加result值也能正常得到结果,报错是一样的。有什么问题?我们该如何解决这个问题?

提前致谢

我认为这是一个视图,而不是像评论所说的那样只是一个函数调用的文件。所以我通过将当前 url 值保存到本地存储并重新加载网络视图来解决问题。

请求函数其他Screen.swift

DispatchQueue.main.async {
   self.callJsfunc()
}
    func callJsfunc() {
        let appDelegate = UIApplication.shared.delegate as? AppDelegate
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let moveScreen = storyboard.instantiateViewController(withIdentifier: "mainWebViewController") as! mainWebViewController
        moveScreen.modalPresentationStyle = .overCurrentContext
        moveScreen.modalTransitionStyle = .crossDissolve
        appDelegate?.window?.rootViewController = moveScreen
    }

WebView.Swift

            DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                self.sendToInAppCode(self.Result)
                self.Result = ""
            }