首页 > 解决方案 > 将 URL 值传递给 SecondView 控制器 WebView (WKWebView)

问题描述

我已经实现了 QR 扫描仪代码,扫描后我已经得到了 URL 字符串,我需要将它传递给 secondview 控制器到 WKWebView。但是每当我尝试传递 URL 字符串时,它就会变成null或在单独的视图中打开。因为它在 secondview 控制器中没有正确打开。问题:需要将 url 值传递给第二个控制器 webview。First View Controller:包含二维码扫描码——获取URL。第二个视图控制器:包含用于显示 URL 数据的 WebView。

第一个控制器代码:

if let url = URL(string: decodedURL) {
    let vc = SecondViewController(nibName: "SecondViewController", bundle: nil)
    let url = URL(string: decodedURL)
    vc.webView = WKWebView(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))
    vc.webView.autoresizingMask = UIView.AutoresizingMask(rawValue: UIView.AutoresizingMask.flexibleWidth.rawValue | UIView.AutoresizingMask.flexibleHeight.rawValue)
    vc.webView.configuration.preferences.javaScriptEnabled = true
    self.view.addSubview(vc.webView)
    vc.webView.load(URLRequest(url: url!))
    self.navigationController?.pushViewController(vc, animated: true)
}

第二个视图控制器:

@IBOutlet weak var webView: WKWebView!

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

标签: iosswiftuiviewcontrollerseguewkwebview

解决方案


在中添加以下变量SecondViewController

var url: URL?

在添加以下代码viewDidLoad的方法中:SecondViewController

override func viewDidLoad() {
    super.viewDidLoad()

    if let url = self.url {
        self.webView.load(URLRequest(url: url))
    }
}

里面FirstController,更新代码如下:

if let url = URL(string: decodedURL) {
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
    vc.url = url
    self.navigationController?.pushViewController(vc, animated: true)
}

我希望这能解决您的问题。


推荐阅读