Update(DouShiQiPicker) : Maintenant le DouShiQiPicker fonctionne de faon générique

pull/11/head
Johan LACHENAL 11 months ago
parent ab009dbb0c
commit a5191f8311

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
C20310D62BFCB5FB0031657D /* DoushiQiPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */; };
C20310D82BFCC2410031657D /* ParametersMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20310D72BFCC2410031657D /* ParametersMenuView.swift */; };
C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */; };
C205A2B92BF373360097BD93 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B82BF373360097BD93 /* ContentView.swift */; };
C205A2BB2BF373380097BD93 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C205A2BA2BF373380097BD93 /* Assets.xcassets */; };
@ -38,6 +39,7 @@
/* Begin PBXFileReference section */
C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoushiQiPicker.swift; sourceTree = "<group>"; };
C20310D72BFCC2410031657D /* ParametersMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParametersMenuView.swift; sourceTree = "<group>"; };
C205A2B32BF373360097BD93 /* ArkitDoushiQi.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ArkitDoushiQi.app; sourceTree = BUILT_PRODUCTS_DIR; };
C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArkitDoushiQiApp.swift; sourceTree = "<group>"; };
C205A2B82BF373360097BD93 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@ -115,6 +117,7 @@
C24659E42BF5FE09004E80D5 /* MainMenu.swift */,
C24659E82BF60FAA004E80D5 /* MainMenuButton.swift */,
C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */,
C20310D72BFCC2410031657D /* ParametersMenuView.swift */,
);
path = "Preview Content";
sourceTree = "<group>";
@ -269,6 +272,7 @@
C205A2B92BF373360097BD93 /* ContentView.swift in Sources */,
C24659E92BF60FAA004E80D5 /* MainMenuButton.swift in Sources */,
C24659E52BF5FE09004E80D5 /* MainMenu.swift in Sources */,
C20310D82BFCC2410031657D /* ParametersMenuView.swift in Sources */,
C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */,
C20310D62BFCB5FB0031657D /* DoushiQiPicker.swift in Sources */,
);

@ -7,29 +7,22 @@
import SwiftUI
enum AI: String, CaseIterable, Identifiable, Hashable {
case RandomAction = "IA Random"
case EasyTrainedAI = "IA Facile"
case MediumTrainedAI = "IA Intermédiaire"
var id: String { self.rawValue }
}
struct DoushiQiPicker<EnumType: RawRepresentable & CaseIterable & Identifiable & Hashable>: View where EnumType.RawValue == String, EnumType.AllCases: RandomAccessCollection {
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>) {
init(title: String, selectedOption: Binding<EnumType>, options: [EnumType]) {
self.title = title
self._selectedOption = selectedOption
self.options = options
}
var body: some View {
Menu {
Picker(title, selection: $selectedOption) {
ForEach(EnumType.allCases) { option in
ForEach(options) { option in
Text(option.rawValue.description)
.tag(option)
}
}
.labelsHidden()
@ -53,10 +46,20 @@ struct DoushiQiPicker<EnumType: RawRepresentable & CaseIterable & Identifiable &
}
struct DoushiQiPicker_Previews: PreviewProvider {
@State static var selectedItem = AI.RandomAction
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)
DoushiQiPicker(
title: "Selectionne une IA :",
selectedOption: $selectedItem,
options: AI.allCases
)
}
}

@ -0,0 +1,33 @@
//
// ParametersMenuView.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 21/05/2024.
//
import SwiftUI
enum AIT: String, CaseIterable, Identifiable, Hashable {
case RandomAction = "IA Test"
case EasyTrainedAI = "IA Facile"
case MediumTrainedAI = "IA Intermédiaire"
var id: String { self.rawValue }
}
struct ParametersMenuView: View {
@State private var selectOption: AIT = .RandomAction
var body: some View {
VStack {
DoushiQiPicker(title: "Selectionne une IA :",
selectedOption: $selectOption,
options: AIT.allCases)
}
}
}
struct ParametersMenuView_Previews: PreviewProvider {
static var previews: some View {
ParametersMenuView()
}
}
Loading…
Cancel
Save