[英]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.