我创建了一个安静的简单Picker,并希望使用EnvironmentObject作为数据源,但是总是在使用它时,Picker会恢复为默认值。
class HobbiesOfUser: ObservableObject {
@Published var hobbies = ["Swimming", "Football", "Hockey", "Rugby", "Other"]}
struct ContentView: View {
@EnvironmentObject var hobbiesOfUser: HobbiesOfUser
// @State var hobbiesOfUser = ["Swimming", "Football", "Hockey", "Rugby", "Other"]
var body: some View {
Picker(selection: $hobbiesOfUser.hobbies, label: Text("")) {
ForEach(0 ..< hobbiesOfUser.hobbies.count) {
Text(self.hobbiesOfUser.hobbies[$0]).tag($0)
}.labelsHidden()
}
}
}
我试图选择另一种选择器,但有相同的问题
选择应该是数组的一项,而不是完整的数组,如下所示
@EnvironmentObject var hobbiesOfUser: HobbiesOfUser
@State private var selected = "Swimming"
var body: some View {
Picker(selection: $selected, label: Text("")) {
ForEach(0 ..< hobbiesOfUser.hobbies.count) {
Text(self.hobbiesOfUser.hobbies[$0]).tag($0)
}.labelsHidden()
}
}