Пикер возвращается, когда я использую EnvironmentObject в SwiftUI - PullRequest
0 голосов
/ 17 января 2020

Я создал тихий простой инструмент выбора и хочу использовать EnvironmentObject в качестве источника данных, но всегда, когда я его использую, инструмент выбора возвращается к значению по умолчанию.

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()
        }
    }
}

Я пытался выбрать другую форму Пикер, но у него та же проблема

1 Ответ

0 голосов
/ 17 января 2020

Выбор должен быть одним элементом массива, а не полным массивом, как показано ниже

@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()
    }
}
...