簡體   English   中英

SwiftUI 檢查 URL 是否可達並自動切換到 ContentView

[英]SwiftUI check if URL is reachable and switch to ContentView automaticly

我試過這個來檢查連接狀態:

func checkConnection() {
if let url = URL(string: "https://www.xxxxxxxxxxxxxxxxxxxxx") {
    var request = URLRequest(url: url)
    request.httpMethod = "HEAD"
    URLSession(configuration: .default)
      .dataTask(with: request) { (_, response, error) -> Void in
        guard error == nil else {
          print("Error:", error ?? "")
          return
        }

        guard (response as? HTTPURLResponse)?
          .statusCode == 200 else {
            print("down")

            return
        }

        print("up")

        
        
      }
      .resume()
  }
}

它工作正常。 它在控制台中顯示“向上”或“向下”。 I'm a beginner in Xcode and SwiftUI, so my question is: Instead of print("up") I want to go automaticly to the "ContentView" if URL is reachable. 我嘗試了 ContentView() 但它不起作用。

謝謝你的幫助。

這可以通過 NavigationLink 輕松處理。 一種方法是執行以下操作。

如果視圖處於活動狀態,請添加綁定以保留 state。 添加導航鏈接以呈現您想要的視圖。 檢查返回真/假的條件 如果條件為真,綁定的 state 將更新 NavigationLink 並顯示視圖。

@State var isValidURL = false

//Body {...

NavigationLink(destination: ContentView(), isActive: isValidURL {}


func checkConnection() {
if let url = URL(string: "https://www.xxxxxxxxxxxxxxxxxxxxx") {
    var request = URLRequest(url: url)
    request.httpMethod = "HEAD"
    URLSession(configuration: .default)
      .dataTask(with: request) { (_, response, error) -> Void in
        guard error == nil else {
          print("Error:", error ?? "")
          return
        }

        guard (response as? HTTPURLResponse)?
          .statusCode == 200 else {
            print("down")

            return
        }

        self.isValidURL.toggle()
      }
      .resume()
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM