Передать значения URL в SecondView Controller WebView (WKWebView) - PullRequest
1 голос
/ 12 июня 2019

Я реализовал код QR Scanner, после сканирования я уже получаю строку URL, которую мне нужно передать в контроллер secondview в WKWebView.Но всякий раз, когда я пытаюсь передать строку URL, она становится null или открывается в отдельном представлении.Как его не открывается должным образом в контроллер второго вида.Вопрос: необходимо передать значение URL во второй веб-просмотр контроллера.Контроллер первого вида: содержит код сканирования QR - получение URL.Контроллер второго вида: содержит WebView для отображения данных URL.

Код первого контроллера:

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

1 Ответ

3 голосов
/ 12 июня 2019

Добавьте следующую переменную в 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)
}

Надеюсь, это решит вашу проблему.

...