Post

Replies

Boosts

Views

Activity

En présence de plusieurs boutons et de plusieurs vues de destination, comment faire pour que chaque bouton n'ouvre que sur sa propre vue de destination (et non sur toutes les autres)?
Bonjour, Je fais face à un problème avec le NavigationLink de mon appli : il y a plusieurs boutons de navigation sur ma vue, auxquels j'ai attribués, à chacun, une vue de destination. Mais lorsque je clique sur l'un ou l'autre des boutons, la vue qui m'est renvoyée est aléatoire, et se balade entre toutes les vues de destination, que j'aie pourtant attribuées, une à une, à chaque bouton. Ainsi, en présence de plusieurs boutons et de plusieurs vues de destination, comment faire pour que chaque bouton n'ouvre que sur sa propre vue de destination (et non sur toutes les autres )? J'ai essayé plusieurs méthodes, mais là, je crois bien devoir demander l'aide de la communauté. Merci d'avance ! // // Techniques.swift // Survivre // // Created by LEZIER CHRISTOPHE on 26/08/2022. // import SwiftUI struct GrowingButton5: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .padding() .clipShape(Capsule()) .scaleEffect(configuration.isPressed ? 1.2 : 1) .animation(.easeOut(duration:0.2), value : configuration.isPressed) } } struct Accueil: View { @State var isOn = false var body: some View { NavigationView { ScrollView { VStack { Group { Text("SURVIVING") .font(.largeTitle) Text("THE TWENTY-FIRST") .font(.title) Text("CENTURY") .font(.title) Spacer() Text("Petite Application de Survie") .font(.title3) VStack { NavigationLink(destination : Main(), isActive : $isOn){EmptyView()} Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Surviving_Horizontal 5") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 150, height: 150) .padding(.top) }) } Text("A l'usage des Honnêtes Gens") .font(.title3) VStack { NavigationLink(destination: Presentation(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Chapeau") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 100, height: 90) }) }) } Text("PRESENTATION") .font(.title3) } Group { Spacer() VStack { NavigationLink(destination: Reperes(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Reperes") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 80, height: 80) .padding(.bottom) }) }) } Text("REPERES") .font(.title3) Spacer() VStack { NavigationLink(destination: Ressources(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Ressources") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 90, height: 60) }) }) } Text("RESSOURCES") .font(.title3) } Group { Spacer() VStack { NavigationLink(destination: Techniques(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Technique") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 90, height: 80) }) }) Text("TECHNIQUES") .font(.title3) } Spacer() Spacer() VStack { NavigationLink(destination: Bonus(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Bonus") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 80, height: 70) }) }) Text("BONUS") .font(.title3) } }.frame(width: 300, height: 50, alignment: .center) }.buttonStyle(GrowingButton5()) .buttonStyle(PlainButtonStyle()) } } } } struct Accueil_Previews: PreviewProvider { static var previews: some View { Accueil() .previewInterfaceOrientation(.portraitUpsideDown) } }
3
0
488
Sep ’22
En présence de plusieurs boutons et de plusieurs vues de destination, comment faire pour que chaque bouton n'ouvre que sur sa propre vue de destination (et non sur toutes les autres)?
Bonjour, Je fais face à un problème avec le NavigationLink de mon appli : il y a plusieurs boutons de navigation sur ma vue, auxquels j'ai attribués, à chacun, une vue de destination. Mais lorsque je clique sur l'un ou l'autre des boutons, la vue qui m'est renvoyée est aléatoire, et se balade entre toutes les vues de destination, que j'aie pourtant attribuées, une à une, à chaque bouton. Ainsi, en présence de plusieurs boutons et de plusieurs vues de destination, comment faire pour que chaque bouton n'ouvre que sur sa propre vue de destination (et non sur toutes les autres )? J'ai essayé plusieurs méthodes, mais là, je crois bien devoir demander l'aide de la communauté. Merci d'avance ! // // Techniques.swift // Survivre // // Created by LEZIER CHRISTOPHE on 26/08/2022. // import SwiftUI struct GrowingButton5: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .padding() .clipShape(Capsule()) .scaleEffect(configuration.isPressed ? 1.2 : 1) .animation(.easeOut(duration:0.2), value : configuration.isPressed) } } struct Accueil: View { @State var isOn = false var body: some View { NavigationView { ScrollView { VStack { Group { Text("SURVIVING") .font(.largeTitle) Text("THE TWENTY-FIRST") .font(.title) Text("CENTURY") .font(.title) Spacer() Text("Petite Application de Survie") .font(.title3) VStack { NavigationLink(destination : Main(), isActive : $isOn){EmptyView()} Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Surviving_Horizontal 5") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 150, height: 150) .padding(.top) }) } Text("A l'usage des Honnêtes Gens") .font(.title3) VStack { NavigationLink(destination: Presentation(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Chapeau") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 100, height: 90) }) }) } Text("PRESENTATION") .font(.title3) } Group { Spacer() VStack { NavigationLink(destination: Reperes(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Reperes") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 80, height: 80) .padding(.bottom) }) }) } Text("REPERES") .font(.title3) Spacer() VStack { NavigationLink(destination: Ressources(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Ressources") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 90, height: 60) }) }) } Text("RESSOURCES") .font(.title3) } Group { Spacer() VStack { NavigationLink(destination: Techniques(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Technique") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 90, height: 80) }) }) Text("TECHNIQUES") .font(.title3) } Spacer() Spacer() VStack { NavigationLink(destination: Bonus(), isActive : $isOn, label: { Button( action:{ if isOn == false { isOn = true }else{ isOn = false } }, label :{ Image("Bonus") .resizable() .aspectRatio(contentMode: .fill) .frame(width: 80, height: 70) }) }) Text("BONUS") .font(.title3) } }.frame(width: 300, height: 50, alignment: .center) }.buttonStyle(GrowingButton5()) .buttonStyle(PlainButtonStyle()) } } } } struct Accueil_Previews: PreviewProvider { static var previews: some View { Accueil() .previewInterfaceOrientation(.portraitUpsideDown) } }
Replies
3
Boosts
0
Views
488
Activity
Sep ’22
"Searchable" fonctionne bien seul, mais ne filtre plus la recherche, une fois inclus dans mon code.
Bonjour, J'ai un problème avec ma liste. La fonction "searchable" fonctionne très bien lorsque la liste est simple et ne contient ni boutons, ni NavigationLink, mais une fois ceux-ci inclus, la barre de recherche ne filtre plus la liste. Si vous avez une solution... Merci de votre aide !
Replies
6
Boosts
0
Views
462
Activity
Sep ’22