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