繁体   English   中英

将值传递给WKWebView Swift

[英]Passing Values to WKWebView Swift

我试图将用户交互从popOver视图传递到ViewController,然后与WKWebView交互。

当前popOver具有Buttons,当选择该按钮时,它将调用ViewController().callViewControllerMethod()此方法可以正常工作,并且确实调用callViewControllerMethod()

callViewControllerMethod()有一些代码可以在WKWebView上评估Javascript。 运行该代码时,它会触碰evaluateJavascript代码并抛出"fatal error: unexpectedly found nil while unwrapping an Optional value"

但我不知道为什么-这是内部的JavaScript evaluateJavascript功能工作正常,如果直接从所谓ViewController ,但前提是直接调用。

有任何想法吗?

PopOver代码

class BackgroundViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func button1(_ sender: AnyObject!) {
        print("button 1 selected")
        ViewController().callViewControllerMethod()
    }
}

ViewController代码

class ViewController: UIViewController, WKNavigationDelegate, UISearchBarDelegate {
    func callViewControllerMethod() {
        print("got to the method")
        webView.evaluateJavaScript("document.body.style.background = \"white\";") { (result, error) in
            if error != nil {
                print(result as Any)
            }
            else {
                print("background code completed")
            }
        }
    }
}

这个ViewController().callViewControllerMethod()是导致错误的原因,您基本上是在创建ViewController新实例并告诉它执行某些操作,这与您拥有的当前ViewController实例不同

要解决您的问题,您必须在PopOver上创建一个协议/委托以告诉ViewController从自身执行callViewControllerMethod

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM