问题描述
我想在同一WkWebView Controller上调用“隐私策略”和“用户条款”网络链接。我在初始视图控制器中定义了两个不同的按钮,当按下其中任何一个按钮时,我都会在变量中分配相关的URL字符串。然后我通过执行segue将其传递给WkWebView控制器。请在下面查看两个控制器。我的问题是在第一次运行时,URL返回nil,因为当我按下按钮时,它会跳转到WkWebView Controller并崩溃。如果我在初始化时分配了默认链接,它将按预期工作。我不明白为什么它在第一次运行时不进行URL分配行。非常感谢您的帮助,因为我找不到任何解决方案。 (以苹果链接为例)
初始控制器分配URL并执行segue:
class InfoViewController: UIViewController {
var myURL: String?
@IBAction func helpButton(_ sender: UIButton) {
}
@IBAction func privacyPolicyButton(_ sender: UIButton) {
myURL = "https://www.apple.com/legal/intellectual-property/piracy.html"
performSegue(withIdentifier: "GoToWebView",sender: self)
}
@IBAction func termsOfUseButtton(_ sender: UIButton) {
myURL = "https://www.apple.com/legal/internet-services/terms/site.html"
performSegue(withIdentifier: "GoToWebView",sender: self)
}
override func prepare(for segue: UIStoryboardSegue,sender: Any?) {
super.prepare(for: segue,sender: sender)
if segue.identifier == "GoToWebView" {
let destinationVC = segue.destination as! WebViewController
destinationVC.url = myURL
}
}
我的第二个控制器(WkWebView)可以按照Apple文档所述查看Web链接:
class WebViewController: UIViewController,WKUIDelegate {
var webView: WKWebView!
var url: String?
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero,configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let myRequest = URLRequest(url: URL(string: url!)!)
webView.load(myRequest)
}
}
解决方法
设置final savedImage = File(imageFile.path).copy('${appDir.path}/$fileName');
后,您应该重新加载webView
:
url
,
我终于在代码中发现了我的错误。我错误地控制了将segue从初始控制器上的动作按钮拖到第二个控制器上,这导致每当按下按钮时都运行“ presee for segue”方法,而不处理下一行以在IBaction函数下分配URL。我更正了要在控制器之间创建序列的问题,并且效果很好。