Enfin, maintenant, avec la version bêta 5, nous pouvons accéder par programmation à une vue parente. Cependant, il y a plusieurs endroits dans mon application où une vue a un bouton "Enregistrer" qui conclut un processus en plusieurs étapes et revient au début. Dans UIKit, j'utilise popToRootViewController(), mais je n'ai pas réussi à trouver un moyen de faire de même dans SwiftUI.
Vous trouverez ci-dessous un exemple simple du modèle que j'essaie de réaliser. Des idées?
import SwiftUI
struct DetailViewB: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
VStack {
Text("This is Detail View B.")
Button(action: { self.presentationMode.value.dismiss() } )
{ Text("Pop to Detail View A.") }
Button(action: { /* How to do equivalent to popToRootViewController() here?? */ } )
{ Text("Pop two levels to Master View.") }
}
}
}
struct DetailViewA: View {
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>
var body: some View {
VStack {
Text("This is Detail View A.")
NavigationLink(destination: DetailViewB() )
{ Text("Push to Detail View B.") }
Button(action: { self.presentationMode.value.dismiss() } )
{ Text("Pop one level to Master.") }
}
}
}
struct MasterView: View {
var body: some View {
VStack {
Text("This is Master View.")
NavigationLink(destination: DetailViewA() )
{ Text("Push to Detail View A.") }
}
}
}
struct ContentView: View {
var body: some View {
NavigationView {
MasterView()
}
}
}