SwiftUI:隐藏的 NavigationBar 块 UI
SwiftUI: Hidden NavigationBar blocks UI
我正在使用 NavigationView 在视图之间导航。因为我不想使用 NavigationBar,所以我将其隐藏。不幸的是,NavigationBar 所在的区域(它是隐藏的)仍然挡住了 UI。无法点击那里的按钮。
我该如何解决这个问题?
// First View
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
Spacer()
Text("Title")
Spacer()
NavigationLink(destination: View2()) {
Text("Next")
}
.navigationBarTitle("", displayMode: .inline)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
Spacer()
}
}
}
}
和
// Second View: Here the button cannot be tapped
struct View2: View {
var body: some View {
NavigationView {
VStack {
Button(action: {
print("this button doesn't work")
}, label: {
Text("Do something")
})
Spacer()
}
.padding(.top, 50)
.edgesIgnoringSafeArea(.all)
}
.navigationBarTitle("", displayMode: .inline)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
}
}
问题是由于使用了第二个 NavigationView
- 这是错误的,在这种情况下应该只有一个管理导航堆栈的根导航视图。
这里是固定视图(子一)
struct View2: View {
var body: some View {
VStack {
Button(action: {
print("this button doesn't work")
}, label: {
Text("Do something")
})
Spacer()
}
.padding(.top, 50)
.edgesIgnoringSafeArea(.all)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
}
}
测试 Xcode 13.2 / iOS 15.2
注意:由于您隐藏了导航,但您也不需要模式修饰符,因此删除了 .navigationBarTitle("", displayMode: .inline)
。仅供参考。
我正在使用 NavigationView 在视图之间导航。因为我不想使用 NavigationBar,所以我将其隐藏。不幸的是,NavigationBar 所在的区域(它是隐藏的)仍然挡住了 UI。无法点击那里的按钮。
我该如何解决这个问题?
// First View
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
Spacer()
Text("Title")
Spacer()
NavigationLink(destination: View2()) {
Text("Next")
}
.navigationBarTitle("", displayMode: .inline)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
Spacer()
}
}
}
}
和
// Second View: Here the button cannot be tapped
struct View2: View {
var body: some View {
NavigationView {
VStack {
Button(action: {
print("this button doesn't work")
}, label: {
Text("Do something")
})
Spacer()
}
.padding(.top, 50)
.edgesIgnoringSafeArea(.all)
}
.navigationBarTitle("", displayMode: .inline)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
}
}
问题是由于使用了第二个 NavigationView
- 这是错误的,在这种情况下应该只有一个管理导航堆栈的根导航视图。
这里是固定视图(子一)
struct View2: View {
var body: some View {
VStack {
Button(action: {
print("this button doesn't work")
}, label: {
Text("Do something")
})
Spacer()
}
.padding(.top, 50)
.edgesIgnoringSafeArea(.all)
.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
}
}
测试 Xcode 13.2 / iOS 15.2
注意:由于您隐藏了导航,但您也不需要模式修饰符,因此删除了 .navigationBarTitle("", displayMode: .inline)
。仅供参考。