当我在SwiftUI中使用EnvironmentObject时,选择器回弹

问题描述 投票:0回答:1

我创建了一个安静的简单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()
        }
    }
}

我试图选择另一种选择器,但有相同的问题

environment-variables swiftui picker
1个回答
0
投票

选择应该是数组的一项,而不是完整的数组,如下所示

@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()
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.