NavigationButton
はそれで機能するので、ユーザーがボタンをタップする必要なく、SwiftUIを使用して新しいビューを提示したいと思います。ここに例があります
struct ContentView : View {
var model: Model
var body: some View {
NavigationView {
Text("Hello World")
}.onAppear {
if model.shouldPresent {
// present a new view
}
}
}
}
onAppear
に、新しいビューをナビゲーションスタックにプッシュするコードを含めます。
これは、ビューをモーダルとして提示する方法です。
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! ????")
}
}
同様に、変数を使用して表示するかどうかを制御したい場合は、次のようにすることができます。
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)
}
}
バージョン11.0ベータ4➝。presentationおよびModal以降は非推奨になりました。
心配無用! 。sheet日を節約します!
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()
}
}
}