Код: Выделить всё
struct HomeView: View {
@State private var selectedItem: String? = nil
private let items = ["Apple", "Banana", "Cherry", "Date"]
var body: some View {
VStack {
MenuPicker2(
selectedItem: $selectedItem,
items: items,
nameForItem: { $0 }
)
.padding()
}
}
}
struct MenuPicker2: View {
@Binding var selectedItem: T?
private(set) var items: [T]
private(set) var nameForItem: (T) -> String
var body: some View {
Menu {
ForEach(items, id: \.self) { item in
Button {
selectedItem = item
} label: {
HStack {
VStack(alignment: .leading) {
Text(nameForItem(item))
Text("Fruit")
.bold()
}
Spacer()
if selectedItem == item {
Image(systemName: "checkmark")
}
}
}
}
} label: {
HStack {
Text(selectedItem.map(nameForItem) ?? "Select Item")
Image(systemName: "chevron.up.chevron.down")
.foregroundColor(selectedItem == nil ? Color(UIColor.placeholderText) : .black)
.font(.caption)
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... el-closure
Мобильная версия