[英]problems in displaying different titles in navigation bar
in my code I have this:在我的代码中,我有这个:
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)){
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("Buscar")
}.accentColor(.black)
}
I want that, according to the button that is pressed in ForEach, the tittle of the next view is the name of the button.我想要的是,根据 ForEach 中按下的按钮,下一个视图的标题是按钮的名称。 Now, the name displaying in every button is "Buscar" I've tried to implement, after ForEach and before NavigationLink, a NavigationView, but the hole ForEach disappears.
现在,显示在每个按钮中的名称是我尝试实现的“Buscar”,在 ForEach 之后和 NavigationLink 之前,一个 NavigationView,但 ForEach 孔消失了。 Basically, I want that the Text(specialty.type) that is pressed is the name of the navigation bar back button.
基本上,我希望按下的 Text(specialty.type) 是导航栏后退按钮的名称。 Any ideas?
有任何想法吗?
Here is a demo of possible approach - the idea is to change navigation bar title on the navigation link activation and reset on back.这是可能的方法的演示 - 想法是更改导航链接激活上的导航栏标题并在背面重置。
Demo prepared & tested with Xcode 12 / iOS 14使用 Xcode 12 / iOS 14 准备和测试的演示
struct DemoView: View {
@State private var barTitle = ""
@State private var selectedType = ""
@State private var isActive = false
let types = ["Type1", "Type2", "Type3"]
var body: some View {
NavigationView {
VStack {
ForEach(types, id: \.self) { type in
Button(type) {
self.isActive = true
self.selectedType = type
self.barTitle = type // comment for variant 2
}
}
}
.background(
NavigationLink(destination:
Text(selectedType)
// .onAppear { self.barTitle = self.selectedType } // variant 2
, isActive: $isActive) { EmptyView() }
)
.navigationBarTitle(barTitle)
.onAppear {
self.barTitle = "Buscar"
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.