Используйте тот же WKWebView в других классах

Привет, я сейчас использую WKWebView в своем проекте Swift 3. Можно ли сохранить один и тот же WKWebView в другом классе, чтобы вы запускали один основной WKWebView в разных классах?

Я пытался сделать это с помощью WKProcessPool и WKWebsiteDataStorage, но когда я устанавливаю новый WKWebView в другом классе, я не знаю, как ссылаться на существующую конфигурацию / зарегистрированный в wkwebview.

Я искал в Интернете, но не нашел решения. Надеюсь, вы понимаете мою проблему и знаете решение. Заранее спасибо!!


person Stef    schedule 27.09.2017    source источник
comment
Не совсем уверен, что вы здесь собираетесь. Вы пытаетесь использовать один экземпляр одного и того же WKWebView в нескольких классах или просто пытаетесь повторно использовать один повторно используемый WKWebView класс с новыми экземплярами каждый раз?   -  person ZGski    schedule 27.09.2017
comment
Данке Штеффен дю Пфайфф ich hab jetzt genau das gleiche Задача: D   -  person 最白目    schedule 13.05.2019


Ответы (1)


Стеф. Если вы хотите использовать одну и ту же конфигурацию для всех экземпляров веб-представления, просто создайте класс или расширение со статическим свойством / методом. Например:

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

Если вы хотите использовать файлы cookie только между экземплярами веб-представления, используйте объект-одиночку WKWebsiteDataStore.default() для своих WKWebViewConfiguration экземпляров.

person Eldar Pikunov    schedule 28.09.2017
comment
Это сработало, Эльдар! Спасибо, нигде в Интернете не нашел! Хороший метод! - person Stef; 29.09.2017