WebView не загружается - PullRequest
       11

WebView не загружается

0 голосов
/ 24 мая 2018

Я только начал разрабатывать с помощью swift, поэтому извините, если вопрос простой / глупый.

У меня есть следующая настройка, просто тест

import WebKit
import UIKit

class ViewController: UIViewController, WKNavigationDelegate {

var webView: WKWebView!

override func loadView() {

    webView = WKWebView()
    webView.navigationDelegate = self
    view = webView
}

override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL(string: "https://hackingswift.com")!
    webView.load(URLRequest(url:url))
    webView.allowsBackForwardNavigationGestures = true

}

}

К сожалению, браузер нене загружаю.Симулятор показывает только пустую панель навигации.Предложения?Я следую учебнику по hackingswift, поэтому он должен работать.

Ответы [ 3 ]

0 голосов
/ 26 мая 2018

РЕДАКТИРОВАТЬ: похоже, что некоторые веб-сайты загружаются, а другие нет, даже если они безопасны.Если я добавлю apple.com в пример, он загружается, но некоторые другие не

Ваш URL должен быть запущен с http или https дляwebView для загрузки.

Другая возможная причина - ваш URL содержит недействительный сертификат.Добавьте делегат функцию ниже в ваш код.Вы должны позволить WKWebView обойти проверку сертификата.Однако этот код никогда не рекомендуется запускать в производство.Вы должны быть осторожны с тем, какой веб-сайт должен и будет загружать ваш webView.

func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
    let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
    completionHandler(.useCredential, cred)
}
0 голосов
/ 26 мая 2018

Проблема в следующей строке:

let url = URL(string: "https://hackingswift.com")!

В Интернете нет такого URL, поэтому вы на самом деле ничего не увидите.(Вы ничего не увидите, если вставите этот URL в любой браузер.)

Так что измените эту строку на:

let url = URL(string: "https://www.hackingwithswift.com")!

Теперь запустите приложение,и presto, вы увидите веб-сайт:

enter image description here

0 голосов
/ 24 мая 2018

Вы должны добавить webView как подпредставление или создать IBOutlet с помощью Интерфейсного конструктора.

Попробуйте это:

class ViewController: UIViewController, WKNavigationDelegate {

    var webView: WKWebView?

   func loadView() {            
        webView = WKWebView()
        webView?.navigationDelegate = self
        self.view.addSubview(webView!)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.loadView()
        let url = URL(string: "https://hackingswift.com")!
        webView?.load(URLRequest(url:url))
        webView?.allowsBackForwardNavigationGestures = true
    }

}

Если вы хотите, чтобы это было немного проще (без переменной nullable), например:

class ViewController: UIViewController, WKNavigationDelegate {

    var webView = WKWebView()

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.navigationDelegate = self
        self.view.addSubview(webView)
        webView?.allowsBackForwardNavigationGestures = true
        self.loadUrl("https://hackingswift.com")
    }

    func loadUrl(_ url: String) {            
        if let url = URL(string: url) {
            webView.load(URLRequest(url:url))
        }
    }
}
...