![](/img/trans.png)
[英]I want to hide the navigation bar and display only the back button in SwiftUI
[英]Hide navigation bar but keep back button - SwiftUI
是否可以隐藏/删除NavigationBar
但保持后退按钮可见?
我曾尝试隐藏整个导航栏并使用NavigationLink
添加自定义后退按钮,但是当我按下之前没有的后退按钮时,我在第一个视图( ProductList
)上得到了一个后退按钮。
如果我必须创建一个自定义后退按钮,是否有与NavigationLink
不同的方式,就像我在Tab1View
中使用的那样,在导航返回时消除出现在ProductList
中的后退按钮?
这是第一个使用NavigationLink
到TabBar
的视图:
struct ProductList: View {
ScrollView{
VStack{
ForEach(matchedItems) { item in
NavigationLink(destination: TabView(product: item)){
Text("MoveToTabView")
}
}
}
}
}
}
然后,我在隐藏NavigationBar
的地方使用TabBar
:
struct TabView: View {
var product: ProductModel
var body: some View {
TabView {
// TAB 1
Tab1View(product: product).tabItem {
Text(product.detailTabNames[0])
}
.navigationBarTitle("")
.navigationBarHidden(true)
// TAB 2
Tab2View(product: product).tabItem {
Text(product.detailTabNames[1])
}
.navigationBarTitle("")
.navigationBarHidden(true)
}
}
}
最后是来自Tabbar
的最终View
,我在其中添加了我自己的自定义后退按钮:
struct Tab1View: View {
var product: ProductModel
var body: some View {
ZStack(alignment: .topLeading) {
Text("Tab1View")
NavigationLink(destination: ProductList()){
Image(systemName: "chevron.backward")
}
}
}
}
为了保留后退导航功能,您仍然需要导航栏。 使用您想要的视图执行此操作的方法是:
.navigationBarTitle("", displayMode: .inline)
除此之外,您需要保持导航栏可见。 如果不这样做,SwiftUI 将不会显示返回 go 的导航链接。
我似乎通过遵循这个并使用@Environment
解决了我的问题
因此,不要像这样在我的最终选项卡中使用NavigationLink
:
ZStack(alignment: .topLeading) {
Text("Tab1View")
NavigationLink(destination: ProductList()){
Image(systemName: "chevron.backward")
}
}
我现在正在使用一个按钮,使用@Environment
关闭这样的视图:
struct Tab1View: View {
@Environment(\.presentationMode) var presentation
var product: ProductModel
var body: some View {
ZStack(alignment: .topLeading) {
Text("Tab1View")
Button(action: {
self.presentation.wrappedValue.dismiss()
}, label: {
Text("PressMe")
})
}
}
}
这样做可以让我以同样的方式在 TabView 中隐藏NavigationBar
:
.navigationBarTitle("")
.navigationBarHidden(true)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.