Post

Replies

Boosts

Views

Created

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
468
Sep ’22