Создать средство выбора, которое возвращает строку - PullRequest
0 голосов
/ 04 апреля 2020

Hello everyone

Я создаю форму, которая позволяет мне изменять данные переменной @EnvironmentObject.

Поэтому я хотел бы иметь возможность создать средство выбора, которое возвращает Строка. Однако после многих неудачных попыток у меня сложилось впечатление, что сборщик не может вернуть строку.

У кого-нибудь будет идея для средства выбора, которое возвращает строку (возможно, через UIKit?).

Вот мой код:

struct UserStruct {
    var firstName: String
    var lastName: String
    var birthDate: Int
    var city: String
    var postalCode: Int
    var street: String
    var streetCode: String
    var country: String
}

class User: ObservableObject {
   @Published var userProfile = UserStruct()
 // Other stuff here
}


// Then in my FormView: 
 // I declare the object as @EnvironmentObject
  @EnvironmentObject var userStore: User

 // I declare an array which contains all the country for the picker
  let country = ["France", "Russie", "USA"]


// In my var body: some View... 
// Trying to change the value of country of the userStore object
Picker(selection: $userStore.userProfile.country, label: Text("Make a choice")) {
  ForEach(0 ..< country.count) { index in
     Text(self.country[index]).tag(index)
  }

Спасибо всем за помощь ,

1 Ответ

0 голосов
/ 04 апреля 2020

вы можете попробовать что-то вроде этого:

let country = ["France", "Russie", "USA"]
@State var countrySelection = 0 

            Picker(selection: Binding(get: {
            self.countrySelection
        }, set: { newVal in
            self.countrySelection = newVal
            self.userStore.userProfile.country = self.country[self.countrySelection]
        }), label: Text("Make a choice")) {
            ForEach(0 ..< country.count) { index in
                Text(self.country[index]).tag(index)
            }
        }
...