Как сделать WKWebView как глобальный объект в приложении с несколькими представлениями?

В вашем приложении с несколькими представлениями вы можете сделать WKWebView глобальным объектом, чтобы использовать его в разных представлениях. Для этого вам потребуется создать класс, который будет представлять ваш WKWebViewManager.

1. Создайте новый Swift-класс с названием "WKWebViewManager".

2. Внутри класса WKWebViewManager добавьте следующие свойства:

import WebKit

class WKWebViewManager {
    static let shared = WKWebViewManager()
    lazy var webView: WKWebView = {
        let configuration = WKWebViewConfiguration()
        let webView = WKWebView(frame: .zero, configuration: configuration)
        return webView
    }()
    
    private init() { }
}

В этом классе мы создаем свойство webView с модификатором lazy и конфигурацией WKWebViewConfiguration. Значение webView будет создано только тогда, когда оно впервые будет использовано, что помогает эффективному использованию ресурсов.

3. Теперь вы можете использовать объект WKWebViewManager.shared.webView в любом представлении вашего приложения. Например, в вашем контроллере представления (ViewController) вы можете использовать его следующим образом:

import UIKit
import WebKit

class ViewController: UIViewController {
    
    var webView: WKWebView {
        return WKWebViewManager.shared.webView
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Добавьте webView в представление
        view.addSubview(webView)
        
        // Установите ограничения webView на всю площадь представления
        webView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            webView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            webView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            webView.topAnchor.constraint(equalTo: view.topAnchor),
            webView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
        
        // Загрузите URL в webView
        if let url = URL(string: "https://www.example.com") {
            webView.load(URLRequest(url: url))
        }
    }
}

В приведенном выше коде мы используем webView из WKWebViewManager.shared, добавляем его в представление и загружаем URL.

4. Вы можете использовать объект WKWebViewManager.shared.webView в других контроллерах представлений вашего приложения, чтобы иметь доступ к тому же экземпляру WKWebView и использовать его по своему усмотрению.

Теперь у вас есть глобальный объект WKWebView, который может быть общим для всех представлений в вашем приложении. Вы можете использовать этот подход, чтобы повторно использовать один и тот же экземпляр WKWebView, избегая необходимости создавать его каждый раз при переходе между представлениями.