Je souhaite donc présenter une nouvelle vue à l'aide de SwiftUI, sans que l'utilisateur n'ait à appuyer sur un bouton, car NavigationButton
fonctionnerait avec cela. Voici un exemple
struct ContentView : View {
var model: Model
var body: some View {
NavigationView {
Text("Hello World")
}.onAppear {
if model.shouldPresent {
// present a new view
}
}
}
}
Dans le onAppear
je veux inclure du code qui poussera une nouvelle vue sur la pile de navigation.
Voici un moyen de présenter la vue comme un modal.
struct PresentOnloadView: View {
var body: some View {
HStack {
Text("Hey there")
}
.presentation(Modal(HelloView(), onDismiss: nil))
}
}
struct HelloView: View {
var body: some View {
Text("Whats up! ????")
}
}
De même, si vous cherchez à contrôler s'il faut présenter ou non une variable, vous pouvez faire quelque chose comme ça.
struct PresentOnloadControlledView : View {
@State var sayHello = false
var body: some View {
HStack {
Text("What's up!")
}
.onAppear(perform: {
// Decide whether to show another view or not here
self.sayHello = true
})
.presentation(sayHello ? Modal(HelloView()) : nil)
}
}
Depuis Version 11.0 beta 4 ➝ . Presentation et Modal est obsolète.
Ne pas s'inquiéter! . feuille sauve la journée!
struct PresentOnloadControlledView : View {
@State var sayHello = false
var body: some View {
HStack {
Text("What's up!")
}
.onAppear(perform: {
// Decide whether to show another view or not here
self.sayHello = true
})
.sheet(isPresented: $sayHello) {
HelloView()
}
}
}