У меня есть элемент Picker в VStack, но когда его содержимое изменяется при добавлении нового элемента, Picker не обновляется.
После скрытия и показа Picker новый элемент становится видимым.
Кто-нибудь знает, как обновить содержимое средства выбора без необходимости скрывать / показывать его?
Вы можете воспроизвести это, создав новый проект SwiftUI и скопировав вместо этого следующий кодструктуры "ContentView".
class ContentModel {
@Published var pickerData: [String] = ["1"]
func addPickerData() {
pickerData.append("\(pickerData.count + 1)")
}
}
struct ContentView: View {
let contentModel = ContentModel()
@State private var showPicker = false
@State private var selectedPickerValue = ""
var body: some View {
VStack(spacing: 8) {
Text("Adding a new Element to the Picker does not refresh its content :-(")
Button(action: {
self.contentModel.addPickerData()
}) {
Text("Add Picker Data")
}
Button(action: {
self.showPicker.toggle()
}) {
Text("Show / Hide 2nd Picker")
}
Picker("Select",selection: $selectedPickerValue) {
ForEach(contentModel.pickerData, id: \.self) { data in
Text(data)
}
}
if (showPicker) {
Picker("Select",selection: $selectedPickerValue) {
ForEach(contentModel.pickerData, id: \.self) { data in
Text(data)
}
}
}
Text("Selected Value: \(selectedPickerValue)")
}
}
}
Заранее благодарим за любую помощь!