Я пытаюсь открыть внутреннее представление, нажав на ссылку из 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 устанавливаются правильно. Но я не могу найти способ передать загруженные данные в представление и открыть его.
Как теперь я могу перейти к загрузке загруженных данных из ссылки перенаправления в новое представление и открыть ее?