SwiftUI - 在没有嵌套的情况下导航回家?
SwiftUI - Navigating back to home without nesting?
在下面的代码中,如果我使用 links 在视图 A 和 B 之间来回切换,我最终会得到如图所示的嵌套视图。我发现避免嵌套的唯一方法是永远不要 link 到声明 NavigationView 的视图 - 正如下面的 ViewA 所示。我的问题...有没有办法在没有视图嵌套的情况下返回到 ViewA?
struct ViewA: View {
var body: some View {
NavigationView{
NavigationLink(destination: ViewB()) {
Text("ViewB")
}
}
.navigationBarTitle("ViewA")
}
}
struct ViewB: View {
var body: some View {
NavigationLink(destination: ViewA()) {
Text("ViewA")
}
.navigationBarTitle("ViewB")
}
}
您正在嵌套视图,因为每次单击 ViewA/ViewB 它都会创建一个新的视图对象。您可以添加
@Environment(\.presentationMode) var presentationMode
并打电话
presentationMode.wrappedValue.dismiss()
当按下视图按钮时,您将其关闭。
您不应该创建 NavigationLink(destination: ViewA())
,因为它没有返回,它会创建 一个新的 ViewA。导航到 ViewB 后,将自动为您创建后退按钮。
struct ViewA: View {
var body: some View {
NavigationView{
NavigationLink(destination: ViewB()) {
Text("ViewB")
}
}
.navigationBarTitle("ViewA")
}
}
struct ViewB: View {
var body: some View {
Text("ViewB Pure Content")
.navigationBarTitle("ViewB")
}
}
在下面的代码中,如果我使用 links 在视图 A 和 B 之间来回切换,我最终会得到如图所示的嵌套视图。我发现避免嵌套的唯一方法是永远不要 link 到声明 NavigationView 的视图 - 正如下面的 ViewA 所示。我的问题...有没有办法在没有视图嵌套的情况下返回到 ViewA?
struct ViewA: View {
var body: some View {
NavigationView{
NavigationLink(destination: ViewB()) {
Text("ViewB")
}
}
.navigationBarTitle("ViewA")
}
}
struct ViewB: View {
var body: some View {
NavigationLink(destination: ViewA()) {
Text("ViewA")
}
.navigationBarTitle("ViewB")
}
}
您正在嵌套视图,因为每次单击 ViewA/ViewB 它都会创建一个新的视图对象。您可以添加
@Environment(\.presentationMode) var presentationMode
并打电话
presentationMode.wrappedValue.dismiss()
当按下视图按钮时,您将其关闭。
您不应该创建 NavigationLink(destination: ViewA())
,因为它没有返回,它会创建 一个新的 ViewA。导航到 ViewB 后,将自动为您创建后退按钮。
struct ViewA: View {
var body: some View {
NavigationView{
NavigationLink(destination: ViewB()) {
Text("ViewB")
}
}
.navigationBarTitle("ViewA")
}
}
struct ViewB: View {
var body: some View {
Text("ViewB Pure Content")
.navigationBarTitle("ViewB")
}
}