![](/img/trans.png)
[英]How can I make my CustomView returns View plus some more extra data in SwiftUI?
[英]SwiftUI how can I make my app pause until I receive some API Data?
struct LoginView: View {
@State private var username = ""
private var searchAllowed : Bool{
if(username.count>2)
{
return false
}
return true
}
var body: some View {
NavigationView{
VStack{
Text("Enter your Username:")
.font(.title.bold())
TextField("Username", text: $username)
.frame(width: 280)
.padding(.bottom)
NavigationLink{
Text("Test")
} label:
{
ZStack{
RoundedRectangle(cornerRadius: 5)
.fill(.gray)
.frame(width: 200, height: 50)
Text("Search")
.foregroundColor(.white)
.task { await loadData() }
}
}
.disabled(searchAllowed)
}
}
}
func loadData() async{
guard let url = URL(string: url) else{
print("bad url")
return
}
do {
let (data, _) = try await URLSession.shared.data(from: url)
if let decodedRespose = try? JSONDecoder().decode(ApiResponse.self, from: data){
//do smth
print(decodedRespose)
}
} catch{
print("bad")
}
}
}
所以我想要它,這樣當我按下搜索 NavigationLink 時,它只會在 api 調用成功並且我得到一些我需要的特定數據時才將我帶到視圖,我怎樣才能讓它像這樣有條件? 這一切都是同步的,所以在將用戶移動到新視圖之前,我似乎迫不及待地想看看我是否擁有正確的數據。
正如@NoeOnJupiter 所說。
在 NavigationLink 目標中,使用顯示ProgressView
的條件視圖邏輯,在loadData()
完成后,翻轉 boolean 並顯示所需的視圖,顯示 API 數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.