@Votetoda

Как перезагрузить Webview только после того как страница загружена?

Как перезагрузить Webview только после того как страница загружена ?То есть у меня есть контент в webview, и при смене данных, мне нужно обновить сам webview когда данные будут готовы для замены, то есть не показывать белый экран и постепенную загрузку страницы.
webView = WKWebView(frame: webView.frame)
view.addSubview(webView)
webView.navigationDelegate = self
webView.load(myRequest)
Вариант использовать 2 webview и менять их с друг-другом , ну такое себе решение.
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 1
maestrro712
@maestrro712
 iOS Developer
Я думаю, это можно сделать, отменяя загрузку в методе делегата и делая ее вручную:
func webView(_ webView: WKWebView,
                 decidePolicyFor navigationAction: WKNavigationAction,
                 decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        URLSession.shared.dataTask(with: navigationAction.request) { [weak webView] (data, _, _) in
            decisionHandler(.cancel)
            guard let html = data.flatMap({ String(data: $0, encoding: .utf8) }) else {
                return
            }
            webView?.loadHTMLString(html, baseURL: navigationAction.request.url)
        }.resume()
    }

Естественно в такой ситуации надо тщательно проработать всяческие граничные условия, к примеру редиректы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы