Picker issue when selecting a nested Picker
I started with the following code which shows a Picker :
import SwiftUI
struct ContentView: View {
enum MenuOption: String, CaseIterable {
case sort = "Sort"
case search = "Search"
case somethingElse = "Something Else"
}
@State var selectedOption: MenuOption = .sort
var body: some View {
Picker("", selection: $selectedOption) {
ForEach(MenuOption.allCases, id: \.self) {
Text($0.rawValue)
}
}
.pickerStyle(.menu)
}
}
This works fine.
Now, I want to add a submenu for case sort, showing two options, so I tried something like this:
struct ContentView: View {
enum MenuOption: String, CaseIterable {
case sort = "Sort"
case search = "Search"
case somethingElse = "Something Else"
}
enum SortOption: String, CaseIterable {
case date = "Date"
case title = "Title"
}
@State var selectedOption: MenuOption = .sort
@State var selectedSort: SortOption = .date
var body: some View {
Picker("", selection: $selectedOption) {
ForEach(MenuOption.allCases, id: \.self) {
if $0 == .sort {
Picker("Sort", selection: $selectedSort) {
ForEach(SortOption.allCases, id: \.self) {
Text($0.rawValue)
}
}
.pickerStyle(.menu)
}
else {
Text($0.rawValue)
}
}
}
.pickerStyle(.menu)
.controlSize(.small)
}
}
It looks ok at first sight, but if e.g. "Search" is selected, and I then hover to Sort > Date, I would expect that the picker shows "Sort", but it stays at "Search".
How can I fix this?