进入视图后,在人字形图像旁边的“后退”按钮中,导航栏标题紧随其后显示。如何删除它,但保持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)
}
答案 0 :(得分:0)
如果我在导航栏中的子视图中正确理解了您想要的:后退按钮(仅箭头,没有文本)和一些导航标题。
您进入子视图时,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")
}
}