如何在IOS的WkWebView中传递不同的URL?

问题描述

我想在同一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。我更正了要在控制器之间创建序列的问题,并且效果很好。