Код: Выделить всё
import SwiftUI
struct ContentView: View {
enum Category: String, CaseIterable, Identifiable {
case typeA, typeB, typeC
var id: Self { self }
}
enum Option: String, CaseIterable, Identifiable {
case a1, a2, b1, b2, c1, c2
var id: Self { self }
}
@State private var selectedCategory: Category = .typeA
@State private var selectedOption: Option = .a1
var availableOptions: [Option] {
switch selectedCategory {
case .typeA: return [.a1, .a2]
case .typeB: return [.b1, .b2]
case .typeC: return [.c1, .c2]
}
}
var body: some View {
Form {
Section(header: Text("Selection")) {
HStack {
Picker("", selection: $selectedCategory) {
ForEach(Category.allCases) { category in
Text(category.rawValue.capitalized).tag(category)
}
}
.labelsHidden()
.pickerStyle(.menu)
Spacer()
Picker("", selection: $selectedOption) {
ForEach(availableOptions) { option in
Text(option.rawValue.uppercased()).tag(option)
}
}
.labelsHidden()
.pickerStyle(.menu)
}
}
}
.onChange(of: selectedCategory, { oldValue, newValue in
if !availableOptions.contains(selectedOption), let firstOption = availableOptions.first {
selectedOption = firstOption
}
})
}
}
#Preview {
ContentView()
}
Почему оба текста. Заполнить опционер после того, как выбранное значение в категории, выпивчик, изменился (в настоящее время я делаю это в методе OnChange )? Это происходит только на моем iPhone 14 с установленным iOS 18.5. Я все удалил и оставил только один сборщик типа. Мену с тремя текстовыми полями, и он по -прежнему ведет себя одинаково.
Подробнее здесь: https://stackoverflow.com/questions/797 ... on-changes