Create(DoushiQiPicker)

pull/11/head
Johan LACHENAL 11 months ago
parent 0feb38d604
commit ab009dbb0c

@ -7,6 +7,7 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
C20310D62BFCB5FB0031657D /* DoushiQiPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */; };
C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */; }; C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */; };
C205A2B92BF373360097BD93 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B82BF373360097BD93 /* ContentView.swift */; }; C205A2B92BF373360097BD93 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B82BF373360097BD93 /* ContentView.swift */; };
C205A2BB2BF373380097BD93 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C205A2BA2BF373380097BD93 /* Assets.xcassets */; }; C205A2BB2BF373380097BD93 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C205A2BA2BF373380097BD93 /* Assets.xcassets */; };
@ -36,6 +37,7 @@
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoushiQiPicker.swift; sourceTree = "<group>"; };
C205A2B32BF373360097BD93 /* ArkitDoushiQi.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ArkitDoushiQi.app; sourceTree = BUILT_PRODUCTS_DIR; }; 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>"; }; 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>"; }; C205A2B82BF373360097BD93 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@ -112,6 +114,7 @@
C205A2BD2BF373380097BD93 /* Preview Assets.xcassets */, C205A2BD2BF373380097BD93 /* Preview Assets.xcassets */,
C24659E42BF5FE09004E80D5 /* MainMenu.swift */, C24659E42BF5FE09004E80D5 /* MainMenu.swift */,
C24659E82BF60FAA004E80D5 /* MainMenuButton.swift */, C24659E82BF60FAA004E80D5 /* MainMenuButton.swift */,
C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */,
); );
path = "Preview Content"; path = "Preview Content";
sourceTree = "<group>"; sourceTree = "<group>";
@ -267,6 +270,7 @@
C24659E92BF60FAA004E80D5 /* MainMenuButton.swift in Sources */, C24659E92BF60FAA004E80D5 /* MainMenuButton.swift in Sources */,
C24659E52BF5FE09004E80D5 /* MainMenu.swift in Sources */, C24659E52BF5FE09004E80D5 /* MainMenu.swift in Sources */,
C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */, C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */,
C20310D62BFCB5FB0031657D /* DoushiQiPicker.swift in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

@ -0,0 +1,65 @@
//
// DoushiQiPicker.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 21/05/2024.
//
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 {
let title: String
@Binding var selectedOption: EnumType
init(title: String, selectedOption: Binding<EnumType>) {
self.title = title
self._selectedOption = selectedOption
}
var body: some View {
Menu {
Picker(title, selection: $selectedOption) {
ForEach(EnumType.allCases) { option in
Text(option.rawValue.description)
.tag(option)
}
}
.labelsHidden()
.pickerStyle(InlinePickerStyle())
} label: {
HStack {
Text(title)
.foregroundColor(.white)
.padding()
Spacer()
Text(selectedOption.rawValue.description)
.foregroundColor(.white)
.padding()
}
.frame(maxWidth: .infinity)
.padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32))
.background(Color.black)
.clipShape(Capsule())
}
}
}
struct DoushiQiPicker_Previews: PreviewProvider {
@State static var selectedItem = AI.RandomAction
static var previews: some View {
DoushiQiPicker(title: "Selectionne une IA :", selectedOption: $selectedItem)
}
}

@ -0,0 +1,20 @@
/
// Picker.swift
// ArkitDoushiQi
//
// Created by Johan LACHENAL on 21/05/2024.
//
import SwiftUI
struct Picker: View {
var body: some View {
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
}
}
struct Picker_Previews: PreviewProvider {
static var previews: some View {
Picker()
}
}
Loading…
Cancel
Save