Probleme WKWebView qui me donne un écran blanc

SansFromageSansFromage Membre
janvier 2018 modifié dans API AppKit #1

Bonjour à tous,

je galère depuis 2 jour sur un problème avec une WKWebView
le chargement ce fait bien mais rien ne s'affiche.
Petite particularité, je l'utilise dans une extension Today (Widget)

Voici le code de ma classe :

import Cocoa
import NotificationCenter
import WebKit
class TodayViewController: NSViewController, NCWidgetProviding, WKUIDelegate {
    @IBOutlet var webView: WKWebView!

    override var nibName: NSNib.Name? {
        return NSNib.Name("TodayViewController")
    }


func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) {
    // Update your data and prepare for a snapshot. Call completion handler when you are done
    // with NoData if nothing has changed or NewData if there is new data since the last
    // time we called you
    //webView.uiDelegate = self
    //view = webView
    do {
        /*guard let filePath = Bundle.main.path(forResource: "lien", ofType: "html")
            else {
                // File Error
                print ("File reading error")
                return
        }*/

        //let contents =  try String(contentsOfFile: filePath, encoding: .utf8)
        //let baseUrl = URL(fileURLWithPath: filePath)

        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
        webView.loadHTMLString("<html><body><p>Hello!< /p></body></html>", baseURL: nil)

        //webView.loadHTMLString(contents as String, baseURL: baseUrl)

    }
    catch {
        print ("File HTML error")
    }
    completionHandler(.noData)
}

override func viewDidLoad() {
    super.viewDidLoad()
    preferredContentSize = CGSize(width: 480, height: 270)
}

}

Si vous avez une (ou des) idée(s) je suis preneur

Merci à tous

P.S. : super le nouveau forum :smiley: très beau

Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur

    Tu tires une outlet nommée webview, mais au lieu d'utiliser cette instance, tu en crées un nouvelle. Forcément cette nouvelle webview n'est pas à l'écran.

  • SansFromageSansFromage Membre
    janvier 2018 modifié #3

    @Céroce a dit :
    Tu tires une outlet nommée webview, mais au lieu d'utiliser cette instance, tu en crées un nouvelle. Forcément cette nouvelle webview n'est pas à l'écran.

    Merci pour ta réponse, mais je ne vois pas ou je déclare une nouvelle instance de webview ^^ c'est peut-être trop tôt le matin :wink:

    Peux-tu me donner quelques précisions s'il te plaît ?

    Bon ça y est j'ai vu... après avoir bu mon 5ème café je suis réveillé ^^

    Merci beaucoup pour ton aide

  • @IBOutlet var webView: WKWebView! : Tu déclares une webview que tu linkes avec celle d'un xib/storyboard.
    webView = WKWebView(frame: .zero, configuration: webConfiguration) Tu réécris webView et tu lui donnes une frame "nulle".

Connectez-vous ou Inscrivez-vous pour répondre.