双导航栏 SwiftUI
Double Navigation Bar SwiftUI
这是我的场景。
我有 3 个屏幕,第一个屏幕,第二个屏幕和第三个屏幕。
我筛选了一个我有一个按钮,可以导航到第二个屏幕。在第二个屏幕中,我有一个按钮可以导航到第三个屏幕。
对于屏幕二,导航栏运行良好且完美。但是在屏幕三中就像导航栏显示了两次。
我该如何解决这个问题?
这是我的代码,
import SwiftUI
struct ContentView: View {
var body: some View {
FirstView()
}
}
struct FirstView: View {
var body: some View {
NavigationView {
VStack {
Text("This is First View")
NavigationLink(destination: SecondView()) {
Text("Show Second View")
}
}
.navigationBarTitle("Root View", displayMode: .inline)
}
}
}
struct SecondView: View {
var body: some View {
NavigationView {
VStack {
Text("This is Second View")
NavigationLink(destination: ThirdView()) {
Text("Show Third View")
}
}
.navigationBarTitle("Second View", displayMode: .inline)
}
}
}
struct ThirdView: View {
var body: some View {
NavigationView {
Text("Third View")
.navigationBarTitle("Third View", displayMode: .inline)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
这是结果
您不需要第二个 NavigationView,导航堆栈中应该只有一个,即
struct SecondView: View {
var body: some View {
// NavigationView { // << remove this one !!
VStack {
Text("This is Second View")
NavigationLink(destination: ThirdView()) {
Text("Show Third View")
}
}
.navigationBarTitle("Second View", displayMode: .inline)
// }
}
}
这是我的场景。 我有 3 个屏幕,第一个屏幕,第二个屏幕和第三个屏幕。 我筛选了一个我有一个按钮,可以导航到第二个屏幕。在第二个屏幕中,我有一个按钮可以导航到第三个屏幕。 对于屏幕二,导航栏运行良好且完美。但是在屏幕三中就像导航栏显示了两次。 我该如何解决这个问题?
这是我的代码,
import SwiftUI
struct ContentView: View {
var body: some View {
FirstView()
}
}
struct FirstView: View {
var body: some View {
NavigationView {
VStack {
Text("This is First View")
NavigationLink(destination: SecondView()) {
Text("Show Second View")
}
}
.navigationBarTitle("Root View", displayMode: .inline)
}
}
}
struct SecondView: View {
var body: some View {
NavigationView {
VStack {
Text("This is Second View")
NavigationLink(destination: ThirdView()) {
Text("Show Third View")
}
}
.navigationBarTitle("Second View", displayMode: .inline)
}
}
}
struct ThirdView: View {
var body: some View {
NavigationView {
Text("Third View")
.navigationBarTitle("Third View", displayMode: .inline)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
这是结果
您不需要第二个 NavigationView,导航堆栈中应该只有一个,即
struct SecondView: View {
var body: some View {
// NavigationView { // << remove this one !!
VStack {
Text("This is Second View")
NavigationLink(destination: ThirdView()) {
Text("Show Third View")
}
}
.navigationBarTitle("Second View", displayMode: .inline)
// }
}
}