【问题标题】:Hiding view when WKWebView has finished loading swiftUI当 WKWebView 完成加载 swiftUI 时隐藏视图
【发布时间】:2021-04-15 22:36:18
【问题描述】:

一旦 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 会被调用,因为我在调试控制台中看到“完成加载”。

【问题讨论】:

    标签: swift swiftui wkwebview


    【解决方案1】:

    您的View 不会知道要重新加载,除非它被@State 属性或ObservableObject 之类的东西触发。您还没有真正从您的SwiftUiWebView 中提供足够的代码来显示所有内容,但这里是需要发生的事情的要点:

    struct ContentView: View {
        @State var webViewFinishedLoading = false
    
        var body: some View {
           SwiftUiWebView(url: URL(string: "myUrl"), finishedLoading: $webViewFinishedLoading)
           ZStack {
              if (!webViewFinishedLoading) {
                 ....
              }
           }
        }
    }
    
    struct SwiftUiWebView : UIViewRepresentable {
      var url: URL
      var finishedLoading: Binding<Bool>
    
      //...
    } 
    

    然后,您需要将 finishedLoading 绑定传递给您的 Web 视图委托,并在完成加载后将其 .wrappedValue 设置为 true

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        if (webView.isLoading) {
           return
        }
        print("Done Loading")
        finishedLoading.wrappedValue = true
    }
    

    因为它与@State 变量相关联,所以您的视图会知道要刷新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多