Il ne s'agissait pas de la réponse principale, mais plutôt d'une méthode alternative si vous ne voulez pas de la barre de navigation. Voir La réponse de Jake ci-dessous pour la manière normale de procéder avec NavigationView
& NavigationLink
. J'espère que ces informations vous seront toujours utiles ou qu'elles vous mettront sur la bonne voie.
Si vous essayez juste d'obtenir un NavigationLink
travailler avec un Binding
vous pouvez utiliser le même NavigationLink
comme je l'ai fait avec le isActive
paramètre de liaison.
Bref, revenons à la réponse
J'ai créé un modificateur de vue pour cela. Cela signifie également qu'il n'y a pas de barre de navigation. Vous pouvez l'appeler comme ça :
.navigate(to: MainPageView(), when: $willMoveToNextScreen)
Il peut être attaché à n'importe quoi, donc je l'attache généralement à l'extrémité du corps, par exemple :
@State private var willMoveToNextScreen = false
var body: some View {
VStack {
/* ... */
}
.navigate(to: MainPageView(), when: $willMoveToNextScreen)
}
Code (n'oubliez pas de import SwiftUI
) :
extension View {
/// Navigate to a new view.
/// - Parameters:
/// - view: View to navigate to.
/// - binding: Only navigates when this condition is `true`.
func navigate<NewView: View>(to view: NewView, when binding: Binding<Bool>) -> some View {
NavigationView {
ZStack {
self
.navigationBarTitle("")
.navigationBarHidden(true)
NavigationLink(
destination: view
.navigationBarTitle("")
.navigationBarHidden(true),
isActive: binding
) {
EmptyView()
}
}
}
.navigationViewStyle(.stack)
}
}