gpt4 book ai didi

ios - SwiftUI,如何在 API 调用成功返回时关闭当前呈现的 View

转载 作者:行者123 更新时间:2023-12-01 22:00:14 24 4
gpt4 key购买 nike

我正在使用 SwiftUI,我正在尝试实现一个简单的逻辑操作,但无法理解 SwiftUI 操作层次结构。

我有一个类似这样的 API 调用,

final class TaskData: ObservableObject {

@Published var updatedFields = false
@Published var updateMsg = ""


func updateFields()
{
//Some API Call
.whenSuccess { (response) in
DispatchQueue.main.async {
self.updatedFields = true
self.updateMsg = "Successfully updated fields"
//Send Request to dismiss current View ???
}
}
}
}

现在,我有一个类似这样的 View ,根据请求我想关闭这个 View ,但我找不到任何方法,

struct TaskView: View {

@Environment(\.presentationMode) var currentView: Binding<PresentationMode>
@EnvironmentObject var taskData: TaskData

var body : some View {

//Some Views here ////

//Need Some code here to dismiss currentView?????

.navigationBarItems(trailing: Button(action: {

}, label: {
Text("Done")
}).onTapGesture {
self.taskData.updateFields() // Method Call to Update fields
})
}

如果有人能详细解释一下这个东西,我是 SwiftUI 的新手,我看过很多教程,但无法理解 swift 的这种结构。

最佳答案

没有显示 TaskView 是如何呈现的,但是在给定的代码快照中有 presentationMode 让我们假设它是有效的,所以方法可能如下所示

@Environment(\.presentationMode) var presentationMode //better to name it same, 
//type is extracted from Environment
@EnvironmentObject var taskData: TaskData

var body : some View {

//Some Views here ////
SomeView()
.onReceive(taskData.$updatedFields) { success in
if success {
self.presentationMode.wrappedValue.dismiss() // dismiss self
}
}
...

关于ios - SwiftUI,如何在 API 调用成功返回时关闭当前呈现的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60230254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com