yapılar arasında @binding ile ilgili sorunlar
benim kodumda var:
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"))
]
}
aynı google1 resimlerini görmezden gelin, sadece kodun önce çalışmasını sağlamaya çalışıyorum.
Ardından, Arama Görünümünde:
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)
}
}
}
}
'let specialityList' içindeki bilgileri bir scrollView olarak göstermek için
Görüntülenen her dünya bir düğme olarak çalıştığından, bunu deniyorum, hedefe gittiğimde (bu durumda bu SearchBar ()), basılan NavigationLink metnine bağlı olarak farklı bilgilerin gösterilmesini istiyorum.
Bunu 'uzmanlıkListesi' listesindeki sırayı kullanarak nasıl yapabilirim ve hedefte basılan NavigationLink metninin aynı adını nasıl basitçe yazdırabilirim?
Yanıtlar
Sanırım bu o
Not: tür (örneğin, Özel, büyük harfle yazılmış) ve örnek / değer (örneğin, uzmanlık, küçük harf) için aynı isimlendirmeden kaçının, aksi takdirde derleyicinin ve sizin kafanızı karıştırabilir.
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)
}
}
}
}
ve şimdi görüş alanında
struct SearchBar: View {
let item: Specialty
var body: some View {
Text(item.type)
// .. other code
}
}