简体   繁体   English

在导航栏中显示不同标题的问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM