SwiftUI-ObservableObject、EnvironmentObject、SummaryView
创建代码后,我想创建一个摘要视图,允许我查看在选择器中选择的值。 我该怎么办?我读了一些关于@observeObject和@EnvironmentObject的论坛,但我不明白。。。 非常感谢:)SwiftUI-ObservableObject、EnvironmentObject、SummaryView,view,swiftui,summary,observableobject,environmentobject,View,Swiftui,Summary,Observableobject,Environmentobject,创建代码后,我想创建一个摘要视图,允许我查看在选择器中选择的值。 我该怎么办?我读了一些关于@observeObject和@EnvironmentObject的论坛,但我不明白。。。 非常感谢:) 您可以将您的@State属性移动到可观察对象: class ViewModel: ObservableObject { @Published var firstAnimal = Animal.allCases[0] @Published var secondAnimal = Anima
您可以将您的
@State
属性移动到可观察对象
:
class ViewModel: ObservableObject {
@Published var firstAnimal = Animal.allCases[0]
@Published var secondAnimal = Animal.allCases[0]
}
struct ContentView: View {
@EnvironmentObject var viewModel: ViewModel
var body: some View {
...
Picker(selection: $viewModel.firstAnimal, label: Text("Select first animal")) {
ForEach(Animal.allCases, id: \.self) { element in
Text(element.rawValue.capitalized)
}
}
}
}
并从@EnvironmentObject
访问它们:
class ViewModel: ObservableObject {
@Published var firstAnimal = Animal.allCases[0]
@Published var secondAnimal = Animal.allCases[0]
}
struct ContentView: View {
@EnvironmentObject var viewModel: ViewModel
var body: some View {
...
Picker(selection: $viewModel.firstAnimal, label: Text("Select first animal")) {
ForEach(Animal.allCases, id: \.self) { element in
Text(element.rawValue.capitalized)
}
}
}
}
记住将ViewModel
插入到根视图:
ContentView().environmentObject(ViewModel())
您可以将您的
@State
属性移动到可观察对象
:
class ViewModel: ObservableObject {
@Published var firstAnimal = Animal.allCases[0]
@Published var secondAnimal = Animal.allCases[0]
}
struct ContentView: View {
@EnvironmentObject var viewModel: ViewModel
var body: some View {
...
Picker(selection: $viewModel.firstAnimal, label: Text("Select first animal")) {
ForEach(Animal.allCases, id: \.self) { element in
Text(element.rawValue.capitalized)
}
}
}
}
并从@EnvironmentObject
访问它们:
class ViewModel: ObservableObject {
@Published var firstAnimal = Animal.allCases[0]
@Published var secondAnimal = Animal.allCases[0]
}
struct ContentView: View {
@EnvironmentObject var viewModel: ViewModel
var body: some View {
...
Picker(selection: $viewModel.firstAnimal, label: Text("Select first animal")) {
ForEach(Animal.allCases, id: \.self) { element in
Text(element.rawValue.capitalized)
}
}
}
}
记住将ViewModel
插入到根视图:
ContentView().environmentObject(ViewModel())