Откройте внутреннее представление с помощью asyn c загрузки данных из URL-адреса WKWebView. - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь открыть внутреннее представление, нажав на ссылку из WKWebView в SwiftUI.

Когда я нажимаю на ссылку, приложение должно проверить, является ли оно действительным, загрузить определенные данные с URL-адреса и затем откройте это представление, как пользователь щелкнул по нему.

Я создал структуру WebView, используя интерфейс UIViewRepresentable, и добавил следующий метод

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

            if navigationAction.navigationType == .linkActivated  {
                if let url = navigationAction.request.url, UIApplication.shared.canOpenURL(url) {

                    var externalOpen: Bool = true
                    let urlComponents = URLComponents(string: url.absoluteString)
                    if(urlComponents?.host == "www.mywebsite.com") {
                            externalOpen = false
                    }

                    if(externalOpen) {
                        UIApplication.shared.open(url)
                    } else {
                        print(url.absoluteString)
                        parent.parentArticle.redirect = url.absoluteString
                        parent.parentArticle.shouldRedirect = true
                    }

                    decisionHandler(.cancel)
                    return
                }

                decisionHandler(.cancel)
            }

Здесь я получаю URL, по которому щелкнули, и если его хост находится на сайте mywebsite.com, тогда я устанавливаю URL-адрес для открытия в родительском веб-просмотре и говорю ему, что он должен перенаправить.

В моем родительском представлении у меня есть:

//[...]
@State var redirect: String = ""
@State var shouldRedirect: Bool = false
//[...]

И эти два State var устанавливаются правильно. Но я не могу найти способ передать загруженные данные в представление и открыть его.

Как теперь я могу перейти к загрузке загруженных данных из ссылки перенаправления в новое представление и открыть ее?

...