在其他 类 中使用相同的 WKWebView

Use the same WKWebView in other classes

您好,我目前在我的 Swift 3 项目中使用 WKWebView。 是否可以在另一个 class 中保留相同的 WKWebView,以便您在不同的 class 中成为 运行 一个主要的 WKWebView?

我已经尝试使用 WKProcessPool 和 WKWebsiteDataStorage 来做到这一点,但是当我在另一个 class 中设置一个新的 WKWebView 时,我不知道如何在 wkwebview 中引用现有的 configuration/logged .

我在网上找遍了,但找不到解决办法。 我希望你能理解我的问题并知道解决方案。 提前致谢!!

斯特夫。 如果要对所有 Web 视图实例使用相同的配置,只需创建 class 或使用静态 property/method 的扩展。例如:

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!
}

如果您只想在 Web 视图实例之间共享 cookie,请为您的 WKWebViewConfiguration 个实例使用 WKWebsiteDataStore.default() 的单例对象。