web-dev-qa-db-fra.com

comment faire fonctionner WKWebView dans Swift et pour une application macOS

avant qu'il ne soit abattu pour être un doublon, ce n'est pas le cas. Presque toutes les questions sur WKWebView concernent WKWebView dans les applications iOS, pas les applications macOS, la différence étant à peu près juste l'interface UIViewController implémentée au lieu de l'interface NSViewController dans macOS.

L'exemple de code dans la documentation d'Apple ainsi que le code du contrôleur, qui peut être trouvé en ligne, ne fonctionne pas. Bien qu'il compile sans problème, la vue Web reste inactive.

Y a-t-il quelque chose que je n'ai tout simplement pas vu ou est-ce un bug dans WKWebView?
J'ai même copié du code de didacticiels montrant comment faire cela pour iOS et je viens de changer UIViewController en NSViewController (puisque c'était la SEULE différence), mais cela n'a pas fonctionné.

Le code suivant dans ViewController.Swift ne fonctionne pas. Ça ne marche pas non plus si c'est
class ViewController: NSViewController, WKUIDelegate

import Cocoa;
import WebKit;
class ViewController: NSViewController {
    @IBOutlet weak var webView: WKWebView!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let url=URL(string: "http://safetec-cam.biz/images/webcam_extern/bad-nauheim_bahnhof_west.jpg");
        webView.load(URLRequest(url: url!));
    }
}

cela ne fonctionne pas non plus si c'est fait ainsi avec le UIViewController échangé contre NSViewController image de https://developer.Apple.com/documentation/webkit/wkwebview

9
Ozymandias42

Je vous recommande de repartir de zéro:

Définissez votre URL à charger:

let myURLString = "https:yourWebLink"
let url = NSURL(string: myURLString)
let request = NSURLRequest(URL: url!)

Demande d'initialisation et de chargement dans la vue Web:

let webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)

Implémentez WKNavigationDelegate pour tracer votre page Charge/Erreur:

extension ViewController: WKNavigationDelegate {

    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
        print("Started to load")
    }

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("Finished loading")
    }

    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
        print(error.localizedDescription)
    }
}

Pour plus de vérification de référence: https://iosdevcenters.blogspot.com/2016/05/creating-simple-browser-with-wkwebview.html

6
Jeba Moses