problemas con @binding entre estructuras
en mi código tengo:
struct Specialty {
let type:String
let color:Color
let image:Image
}
// MARK: Search
struct Search: View {
@State var show = false
@State var txt = ""
@State var index = 1
let specialtyList = [
Specialty(type: "Cardiologia", color: Color.blue, image: Image("google1") ),
Specialty(type: "Clínica Médica", color: Color.pink, image: Image("google1")),
Specialty(type: "Dermatologia", color: Color("Color"), image: Image("google1")),
Specialty(type: "Ginecologia e Obstetrícia", color: Color.pink, image: Image("google1")),
Specialty(type: "Medicina do Trabalho", color: Color.red, image: Image("google1")),
Specialty(type: "Oftalmologia", color: Color("Color"), image: Image("google1")),
Specialty(type: "Ortopedia", color: Color.pink, image: Image("google1")),
Specialty(type: "Otorrinolaringologia", color: Color.blue, image: Image("google1")),
Specialty(type: "Pediatria", color: Color.red, image: Image("google1")),
Specialty(type: "Psiquiatria", color: Color("Color"), image: Image("google1")),
Specialty(type: "Radiologia", color: Color("Color"), image: Image("google1"))
]
}
ignore las mismas imágenes de google1, solo estoy tratando de que el código funcione primero.
Luego, en la Vista de búsqueda, tengo:
ForEach(specialtyList, id: \.type){ Specialty in
NavigationLink (destination: SearchBar()){
VStack(spacing: 18) {
HStack{
Text(Specialty.type).foregroundColor(.white)
Specialty.image
.renderingMode(.original)
.resizable()
.frame(width: 35, height: 35)
}
}
}
}
para mostrar la información en 'dejar specialityList' como un scrollView
Como cada mundo mostrado funciona como un botón, estoy intentando que, cuando vaya al destino (que es SearchBar () en este caso), quiero que se muestre información diferente según el texto de NavigationLink que se presione.
¿Cómo podría hacerlo usando el orden en la lista 'SpecialtyList' y cómo podría simplemente imprimir, en el destino, el mismo nombre del texto de NavigationLink que se presionó?
Respuestas
Supongo que esto es todo
Nota: intente evitar el mismo nombre para el tipo (como, especialidad, en mayúsculas) y la instancia / valor (como, especialidad, en minúsculas), de lo contrario, podría confundir al compilador y a usted.
ForEach(specialtyList, id: \.type){ specialty in // << named correctly
NavigationLink (destination: SearchBar(item: specialty)){ // << inject here
VStack(spacing: 18) {
HStack{
Text(specialty.type).foregroundColor(.white)
specialty.image
.renderingMode(.original)
.resizable()
.frame(width: 35, height: 35)
}
}
}
}
y ahora a la vista
struct SearchBar: View {
let item: Specialty
var body: some View {
Text(item.type)
// .. other code
}
}