如何解决SwiftUI 检查 URL 是否可达并自动切换到 ContentView
我试过这个来检查连接状态:
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()
}
}
而且它工作正常。它在控制台中显示“向上”或“向下”。我是 Xcode 和 SwiftUI 的初学者,所以我的问题是: 如果 URL 可访问,我想自动转到“ContentView”,而不是 print("up")。我试过 ContentView() 但它不起作用。
感谢您的帮助。
解决方法
这可以通过 NavigationLink 轻松处理。一种方法是执行以下操作。
添加绑定以在视图处于活动状态时保持状态。 添加导航链接以呈现您想要的视图。 检查您的条件返回真/假 如果条件为真,则绑定状态将更新 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()
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。