navigation - 如何从后退按钮中删除标题
问题描述
在我转到一个视图后,在后退按钮中,人字形图像旁边,导航栏标题显示在它之后。我怎样才能删除它但保持navigationBarTittle
?我试过navigationBarBackButtonHidden
但没有用。
更新
我补充说:
@State private var active: Bool = false
和
.navigationBarTitle(!active ? "Buscar" : "")
当我单击按钮时,另一个视图看起来像我想要的那样,但随后一切都变成了白色。
这是代码:
@EnvironmentObject var session: SessionStore
@Environment(\.colorScheme) var colorScheme
init() {
UINavigationBar.appearance().backIndicatorImage = UIImage(systemName: "chevron.left")
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(systemName: "chevron.left")
}
@State private var active: Bool = false
var body: some View {
NavigationView {
VStack(spacing: 0) {
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 18) {
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 20) {
Text("teste")
.frame(height: 180)
.frame(width: 330)
.background(Color.blue)
.cornerRadius(15)
Text("teste")
.frame(height: 180)
.frame(width: 330)
.background(Color.green)
.cornerRadius(15)
Text("teste")
.frame(height: 180)
.frame(width: 330)
.background(Color.pink)
.cornerRadius(15)
}.padding(.horizontal, 12)
}
ForEach(specialtyList, id: \.type) { specialty in
NavigationLink(destination: SearchBar(item: specialty), isActive: self.$active) {
VStack(spacing: 18) {
HStack {
Text(specialty.type).foregroundColor(.white)
specialty.image
.renderingMode(.original)
.resizable()
.frame(width: 35, height: 35)
}.frame(minWidth: 0, idealWidth: 350, maxWidth: .infinity)
.frame(height: 100)
}
}.padding(.horizontal)
.background(specialty.color).cornerRadius(45)
}.padding(.horizontal)
}
.padding(.top)
.padding(.bottom)
}
}.navigationBarTitle(!active ? "Buscar" : "")
}.accentColor(colorScheme == .dark ? Color.white : Color.black)
}
解决方案
如果我在您想要的导航栏中的子视图中正确理解:后退按钮(只有箭头,不是文本)和一些导航标题。
ContentView
当您转到子视图时,您当前拥有的内容会删除其标题:
.navigationBarTitle(!active ? "Buscar" : "")
因此子视图中的后退按钮将没有文本。
这意味着您可能也不需要此代码:
init() {
UINavigationBar.appearance().backIndicatorImage = UIImage(systemName: "chevron.left")
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(systemName: "chevron.left")
}
此外,您需要在子视图中指定导航栏标题:
.navigationBarTitle("detail title")
您的代码不可重现,但这是一个简单的演示:
struct ContentView: View {
@State private var active: Bool = false
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: DetailView(), isActive: self.$active) {
Text("go to...")
}
}
.navigationBarTitle(!active ? "Buscar" : "")
}
}
}
struct DetailView: View {
var body: some View {
Text("detail view")
.navigationBarTitle("detail title")
}
}
推荐阅读
- html - 调整初始 100vh 容器的大小
- javascript - AngularJS - 工具提示不起作用
- excel - Excel 宏执行多列排序
- javascript - Electron:在 BrowserWindow 和呈现的 URL 之间进行通信(nodeIntegration:false)
- excel - VBS for Excel to count and specific word and use it for a loop
- node.js - PM2 会与 Node.js 网络 API 一起使用吗?
- ffmpeg - ffmpeg 即时使用调整大小的图像
- zapier - Zapier - 输入数据排序
- python - 如何在磁盘上保留大量 numpy 矩阵
- sql - SQL:[table_name] AS [alias_name] 给出错误“找不到存储过程 'table_name'”