Установить начальную точку по умолчанию в сборщике

#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. Пожалуйста, смотрите обновленное, с добавлением текста исправления и тестирования.