#swift #swiftui #picker
#swift #swiftui #средство выбора
Вопрос:
Как мне установить начальное значение для текста «Пожалуйста, выберите один» внутри сборщика. В настоящее время по умолчанию используется первый вариант в массиве.
Это состояние
@State var Choioce = 0
Это средство выбора
var settings = ["ch1", "ch2", "ch3"]
Picker("Options", selection: $Choioce) {
Text("Please Select One")
ForEach(0 ..< settings.count) { index in
Text(self.settings[index])
.tag(index)
}
}
Ответ №1:
Сделайте выбор необязательным, как показано ниже. Протестировано с Xcode 12 / iOS 14
struct ContentView: View {
@State var Choioce: Int? // << here !!
var settings = ["ch1", "ch2", "ch3"]
var body: some View {
VStack {
Text("Selection: (Choioce == nil ? "<none>" : settings[Choioce!])")
Picker("Options", selection: $Choioce) {
Text("Please Select One").tag(Optional<Int>.none)
ForEach(0 ..< settings.count) { index in
Text(self.settings[index])
.tag(Optional(index))
}
}
}
}
}
Комментарии:
1. Когда я попробовал это, состояние больше не обновляется. Я добавил
Text("You selected: (settings[Choioce!])")
, чтобы увидеть изменение значений в реальном времени, но оно не обновляется, как это было до превращения его в необязательное.2. Пожалуйста, смотрите обновленное, с добавлением текста исправления и тестирования.