【问题标题】:Pass URL values to SecondView Controller WebView (WKWebView)将 URL 值传递给 SecondView 控制器 WebView (WKWebView)
【发布时间】:2019-06-12 06:44:05
【问题描述】:

我已经实现了 QR 扫描仪代码,在扫描时我已经获得了 URL 字符串,我需要将它传递给 secondview 控制器到 WKWebView。但是每当我尝试传递 URL 字符串时,它就会变成 null 或在单独的视图中打开。因为它在 secondview 控制器中没有正确打开。 问题:需要将 url 值传递给第二个控制器 webview。 第一个视图控制器: 包含二维码扫码——获取网址。 第二个视图控制器: 包含用于显示 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()
}

【问题讨论】:

  • 您是否获得了 null 或 url 未在 webview 中加载?你能确认一下吗?
  • 在您的示例中,您并不是真正“传递 URL”,而是将其分配给目标 viewController webView。它是否显示错误?顺便说一句,第二个let url = URL(string: decodedURL) 应该被删除,self.view.addSubview(vc.webView) 在你的例子中似乎很可疑
  • @Khushbu 未在 secondviewcontroller 中适当加载。 WebView 是第二个控制器的一部分,如果我只将 url 值从第一个控制器传递到第二个控制器,我认为 WebView 会正常工作。
  • @Olympiloutre 是的,你是对的。我需要修改一下,我只会将 URL 传递给 secondcontroller,以便我可以将此值传递给 WebView 以显示数据。但如果我删除 self.view.addSubview(vc.webView) 它将无法工作。

标签: ios swift uiviewcontroller segue wkwebview


【解决方案1】:

SecondViewController中添加以下变量:

var url: URL?

SecondViewControllerviewDidLoad方法中添加如下代码:

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)
}

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

【讨论】:

  • 谢谢你,完全一样,但现在问题是修改代码后它没有导航到第二个控制器。
  • self.navigationController?.pushViewController(vc, animated: true) 。不工作,甚至没有导航到第二个控制器。
  • 我已经创建了测试项目,但导航仍然无法正常工作。 self.navigationController?.pushViewController(vc, animated: true) 附上示例测试项目链接。 drive.google.com/file/d/1WUTq2BhFNRBHFJMtpTUSY56tDTuJZWfx/…
  • 确保navigationController不是零
  • Main.storyboard中,选择ViewController,然后从菜单栏中选择Editor -> Embed In -> Navigation Controller
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
  • 2016-02-09
  • 1970-01-01
相关资源
最近更新 更多