You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.1 KiB

//
// DoushiQiPicker.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 21/05/2024.
//
import SwiftUI
struct DoushiQiPicker<EnumType: RawRepresentable & Identifiable & Hashable>: View where EnumType.RawValue == String {
let title: String
@Binding var selectedOption: EnumType
let options: [EnumType]
init(title: String, selectedOption: Binding<EnumType>, options: [EnumType]) {
self.title = title
self._selectedOption = selectedOption
self.options = options
}
var body: some View {
VStack(spacing: 0) {
Divider().background(Color.gray)
Menu {
Picker(title, selection: $selectedOption) {
ForEach(options) { option in
Text(option.rawValue.description)
.padding()
}
}
.labelsHidden()
.pickerStyle(InlinePickerStyle())
} label: {
HStack {
Text(title)
.foregroundColor(.black)
.padding()
Spacer() // .frame(width : (20 - CGFloat(title.count)))
Text(selectedOption.rawValue.description)
.foregroundColor(.black)
.padding()
}
.frame(maxWidth: .infinity)
.padding(EdgeInsets(top: 0, leading: 32, bottom: 0, trailing: 32))
}
Divider().background(Color.gray)
}
}
}
struct DoushiQiPicker_Previews: PreviewProvider {
enum AI: String, CaseIterable, Identifiable, Hashable {
case RandomAction = "IA Random"
case EasyTrainedAI = "IA Facile"
case MediumTrainedAI = "IA Intermédiaire"
var id: String { self.rawValue }
}
@State static var selectedItem = AI.RandomAction
static var previews: some View {
DoushiQiPicker(
title: "Selectionne une IA :",
selectedOption: $selectedItem,
options: AI.allCases
)
}
}