Ios 尝试在Swift5上的web视图中调用js函数时出错 当我处于Web视图中间时,我遇到了一个问题。
Web视图看起来很正常,加载Web视图时启动的js函数调用没有问题 当您试图从其他地方调用函数时,就会出现问题。我们找不到问题 请求功能 其他屏幕。swiftIos 尝试在Swift5上的web视图中调用js函数时出错 当我处于Web视图中间时,我遇到了一个问题。,ios,swift,null,wkwebview,Ios,Swift,Null,Wkwebview,Web视图看起来很正常,加载Web视图时启动的js函数调用没有问题 当您试图从其他地方调用函数时,就会出现问题。我们找不到问题 请求功能 其他屏幕。swift DispatchQueue.main.async{ let storyboard=UIStoryboard(名称:“Main”,捆绑包:nil) 让myWebView=storyboard.InstanceEviewController(标识符为:“mainWebViewController”)作为!mainWebViewControll
DispatchQueue.main.async{
let storyboard=UIStoryboard(名称:“Main”,捆绑包:nil)
让myWebView=storyboard.InstanceEviewController(标识符为:“mainWebViewController”)作为!mainWebViewController
myWebView.sendToCode(jsonString)
}
WebView.Swift
@IBOutlet var mainWebView:WKWebView!
...
func sendToCode(uu结果:字符串){
evaluateJavaScript(“calljsfunc(\(result))”,completionHandler:{(any,err)->中的Void
打印(任何??“无任何”)
打印(错误??“无错误”)
})
}
“mainWebView.evaluateJavaScript”部分出错
错误为线程1:致命错误:在执行时意外发现零
隐式展开可选值
什么是零
但是我可以正常得到结果,即使我不加结果值,错误是一样的。有什么问题吗?我们如何解决这个问题
提前感谢我认为这是一个视图,而不仅仅是一个函数调用文件,正如评论所说。因此,我通过将当前url值保存到本地存储并重新加载web视图解决了这个问题 请求其他屏幕的功能。swift
DispatchQueue.main.async{
self.callJsfunc()
}
func callJsfunc(){
将appDelegate=UIApplication.shared.delegate设为appDelegate
let storyboard=UIStoryboard(名称:“Main”,捆绑包:nil)
让moveScreen=storyboard.InstanceEviewController(标识符为:“mainWebViewController”)作为!mainWebViewController
moveScreen.modalPresentationStyle=.overCurrentContext
moveScreen.modalTransitionStyle=.CrossBluse
appDelegate?.window?.rootViewController=moveScreen
}
WebView.Swift
DispatchQueue.main.asyncAfter(截止日期:.now()+1){
self.sendToInAppCode(self.Result)
self.Result=“”
}
正如错误所说,您的web视图已解除分配,您无法访问不再存在的内容。您是否尝试设置断点并打印Web视图?是Absenti@Lu_u。我从来没有设置断点。那么你如何调试你的应用程序呢?@Lu_u。当我调试时,设置断点。但是,这并没有设置断点,而是发生了一个错误,错误被自动定位。我只是告诉你,如果你想知道发生了什么,你会发现没有webview,这就是它崩溃的原因