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 に答える