问题描述
在我的代码中,我有这个:
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)
}
我希望根据ForEach中按下的按钮,下一个视图的标题是按钮的名称.现在,显示在每个按钮上的名称是"Buscar".我试过在ForEach之后和NavigationLink之前实现NavigationView,但是ForEach漏洞消失了.基本上,我希望所按下的Text(specialty.type)是导航栏后退按钮的名称.有什么想法吗?
I want that, according to the button that is pressed in ForEach, the tittle of the next view is the name of the button. 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. Basically, I want that the Text(specialty.type) that is pressed is the name of the navigation bar back button. 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.
演示已准备好&在Xcode 12/iOS 14上进行了测试
Demo prepared & tested with 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"
}
}
}
}
这篇关于在导航栏中显示不同标题的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!