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

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

本文介绍了在导航栏中显示不同标题的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

在我的代码中,我有这个:

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"
            }
        }
    }
}

这篇关于在导航栏中显示不同标题的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-06 21:08