关闭屏幕后列表未更新

List is not updating after dismissing the screen

这是我当前的代码

Content.swift

struct ContentView: View {
    var taskStore : TaskStore
    @State var modalIsPresented = false
    
    var body: some View {
        NavigationView {
            List(taskStore.tasks){ task in
                Text(task.name)
            }.navigationTitle("Tasks")
            .navigationBarItems(trailing: Button(action: {
                self.modalIsPresented = true
            }) {
                Image(systemName: "plus")
            })
        }.sheet(isPresented: $modalIsPresented){
            NewTaskView(taskStore: self.taskStore)
        }
    }
}

TaskStore.swift

class TaskStore {
    var tasks = [
        "Code The App",
        "Book an escape room",
    ].map{  Task(name: [=11=])}
}

newTask.swift

struct NewTaskView: View {
    var taskStore : TaskStore
    @State var text = ""
    
    @Environment (\.presentationMode) var presentationMode
    
    var body: some View {
        Form{
            TextField("Task Name", text: $text)
            Button("Add"){
                self.taskStore.tasks.append(
                    Task(name: self.text)
                )
                print(taskStore.tasks)
                self.presentationMode.wrappedValue.dismiss()
            }.disabled(text.isEmpty)
        }
    }
}

然而,当我关闭列表时,列表没有得到更新,但是当我打印值时,它 taskStore.name 得到更新

不确定是什么问题

要观察 TaskStore 任务的变化,请遵循 class 到 ObservableObject 协议,如下所示:

class TaskStore : ObservableObject{
  @Published var tasks = [
      "Code The App",
      "Book an escape room",
   ] .map{  Task(id: [=10=], name: [=10=])}
}

并更新 ContentView 中 taskStore 的声明如下:

struct ContentView: View {
     @ObservedObject var taskStore : TaskStore

要了解有关 Observables 的更多信息,您可以参考:https://medium.com/cleansoftware/what-is-the-observableobject-protocol-in-swifts-combine-b6ad3102ccd4