我试图隐藏启动屏幕一旦WKWebView完成加载。我已经找到了一种方法来检测WKWebView何时完成didFinish
委托的加载,但我被困在隐藏启动屏幕上。目前,一旦WKWebView完成加载,它就将webViewFinishedLoading
设置为true,而在ContentView.swift
中,它应该只在webViewFinishedLoading
设置为false时显示视图。但现在它只显示启动屏幕,即使WKWebView完成加载。下面是我的代码:ContentView.swift
:
var webViewFinishedLoading = false
struct ContentView: View {
var body: some View {
SwiftUiWebView(url: URL(string: "myUrl"))
ZStack {
if (!webViewFinishedLoading) {
....
}
}
}
}
WebView.swift
....
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
if (webView.isLoading) {
return
}
print("Done Loading")
webViewFinishedLoading = true
}
....
我知道didFinish
被调用,因为我在调试控制台中看到“Done Loading”。
2条答案
按热度按时间dzhpxtsq1#
你的
View
不会知道重新加载,除非它被类似@State
属性或ObservableObject
的东西触发。您还没有从SwiftUiWebView
中提供足够的代码来显示所有内容,但这里有一些要点:然后,你需要将
finishedLoading
绑定传递给你的web视图委托,并在加载完成后将其.wrappedValue
设置为true
:因为它绑定到一个
@State
变量,所以你的视图知道要刷新。2w3rbyxf2#
为了让委托方法`didFinish'被调用,我需要像这样实现WebView:
那么可以这样称呼: