0

在我为此失去理智之前。有人请告诉我,为什么它不起作用。我已经花了几个小时来尝试完成这项工作。ObservedObject 只是拒绝更新我的视图。

struct ContentView: View {
    @ObservedObject var viewModel = ListViewModel()
    
    var body: some View {
        NavigationView {
            List(){
                ForEach(viewModel.items, id:\.self) { item in
                   Text(item)
                }
             }
            .navigationBarTitle("Test List", displayMode: .inline)
            .navigationBarItems(
                trailing: Button(action: { ListViewModel().addItem()}) { Image(systemName: "info.circle")}.accentColor(.red))
        }
    }
}

class ListViewModel: ObservableObject, Identifiable {

    @Published var items: Array<String> = ["1", "2", "3", "4", "5","6"]

   func addItem(){
        items.append("7")
   }
}
4

1 回答 1

0

ListViewModel()您正在通过在按钮操作中使用初始化程序 ( ) 创建一个新的 ListViewModel 。

相反,请参阅您在视图中设置为属性的那个:viewModel.addItem()

于 2021-02-19T20:59:47.047 回答