【发布时间】:2019-12-05 18:06:10
【问题描述】:
我有以下设置,其中父视图包含一个NavigationView,它显示一系列页面,A、B 和 C。在页面 C 上有一个隐藏导航视图的按钮。我想拥有它,以便当再次显示导航视图时,它会自动导航到页面 A,但是我不确定如何使用 SwiftUI 执行此操作,如何实现?
struct ParentView: View {
@State var showNavigation:Bool = true
var body: some View {
ZStack {
Button(action: {
self.showNavigation = true
}) {
Text("Show navigation")
}
NavigationView {
NavigationLink(destination: ChildA(showNavigation: $showNavigation)) {
Text("Go to A")
}
}.opacity(showNavigation ? 1.0 : 0.0)
}
}
}
struct ChildA: View {
@Binding var showNavigation:Bool
var body: some View {
VStack {
Text("A")
NavigationLink(destination: ChildB(showNavigation: $showNavigation)) {
Text("Go to B")
}
}
}
}
struct ChildB: View {
@Binding var showNavigation:Bool
var body: some View {
VStack {
Text("B")
NavigationLink(destination: ChildC(showNavigation: $showNavigation)) {
Text("Go to C")
}
}
}
}
struct ChildC: View {
@Binding var showNavigation:Bool
var body: some View {
VStack {
Text("C")
Button(action: {
self.showNavigation = false
}) {
Text("Hide Navigation")
}
}
}
}
【问题讨论】:
-
您可以将
isActive添加到NavigationLink以获得对导航堆栈的更多控制。更多详情请至dev.to/gualtierofr/navigation-in-swiftui-1hg2
标签: swiftui reset navigationview