2017-09-27 24 views
0

Hallo Ich verwende derzeit WKWebView in meinem Swift 3-Projekt. Ist es möglich, das gleiche WKWebView in einer anderen Klasse zu halten, so dass Sie ein Haupt-WKWebView in verschiedenen Klassen ausführen?Verwenden Sie das gleiche WKWebView in anderen Klassen

Ich habe versucht, dies mit WKProcessPool und WKWebsiteDataStorage zu tun, aber wenn ich ein neues WKWebView in der anderen Klasse eingerichtet habe, weiß ich nicht, wie auf die vorhandene Konfiguration verweisen/angemeldet wkwebview.

Ich habe über das Internet gesucht, konnte aber keine Lösung finden. Ich hoffe, Sie verstehen mein Problem und wissen eine Lösung. Vielen Dank im Voraus !!

+0

Nicht genau, wofür Sie hier sind. Versuchen Sie, eine Instanz desselben 'WKWebView' für mehrere Klassen zu verwenden, oder versuchen Sie einfach, eine wiederverwendbare' WKWebView'-Klasse jedes Mal mit neuen Instanzen wiederzuverwenden? – ZGski

Antwort

2

Stef. Wenn Sie die gleiche Konfiguration für alle Web-View-Instanzen verwenden möchten, erstellen Sie einfach eine Klasse oder Erweiterung mit einer statischen Eigenschaft/Methode. Zum Beispiel:

extension WKWebViewConfiguration { 
    static var shared : WKWebViewConfiguration { 
     if _sharedConfiguration == nil { 
      _sharedConfiguration = WKWebViewConfiguration() 
      _sharedConfiguration.websiteDataStore = WKWebsiteDataStore.default() 
      _sharedConfiguration.userContentController = WKUserContentController() 
      _sharedConfiguration.preferences.javaScriptEnabled = true 
      _sharedConfiguration.preferences.javaScriptCanOpenWindowsAutomatically = false 
     } 
     return _sharedConfiguration 
    } 
    private static var _sharedConfiguration : WKWebViewConfiguration! 
} 

Wenn Sie nur Aktien Cookies zwischen Web-Ansicht Instanzen möchten, verwenden Sie Singleton-Objekt durch WKWebsiteDataStore.default() für Ihre WKWebViewConfiguration Instanzen.

+0

Dies funktionierte Eldar! Vielen Dank, ich konnte das nirgendwo im Internet finden! Nette Methode! – Stef

Verwandte Themen