Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui 如何将@State值指定给另一个viewModel已发布属性_Swiftui - Fatal编程技术网

Swiftui 如何将@State值指定给另一个viewModel已发布属性

Swiftui 如何将@State值指定给另一个viewModel已发布属性,swiftui,Swiftui,如何将从一个视图标记的@State值指定给@Published sampleViewModel属性?喜欢 sampleViewModel.com已标记 以下是一个例子: struct ContentView: View { @EnvironmentObject var sampleViewModel: sampleViewModel @State var firstMarked = false @State var secondMarke

如何将从一个视图标记的@State值指定给@Published sampleViewModel属性?喜欢 sampleViewModel.com已标记

以下是一个例子:

 struct ContentView: View {
    @EnvironmentObject var sampleViewModel: sampleViewModel
            @State var firstMarked = false
            @State var secondMarked = true 
            @State var thirdMarked = false
    
    var body: some View {
        VStack {
            CheckboxField(id: "Completed", label: "Completed", isMarked: $firstMarked)
            CheckboxField(id: "Completed", label: "Completed", isMarked: $secondMarked)
            CheckboxField(id: "Completed", label: "Completed", isMarked: $thirdMarked)
        }
        .padding()
    }
}

我们可以通过使用
.onChange
修饰符来实现这一点,如

CheckboxField(id: "Completed", label: "Completed", isMarked: $secondMarked)
  .onChange(of: secondMarked) {
     sampleViewModel.secondMarked = $0     // << here !!
  }
CheckboxField(id:“已完成”,标签:“已完成”,标记:$secondMarked)
.onChange(of:secondMarked){

sampleViewModel.secondMarked=$0/只需使用一个属性,而无需为其提供
@State
@Published
属性

例如,您的:

CheckboxField(id: "Completed", label: "Completed", isMarked: $firstMarked)
试试这个:

CheckboxField(id: "Completed", label: "Completed", isMarked: $sampleViewModel.firstMarked)