masalah dengan @binding antara struct
dalam kode saya, saya memiliki:
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"))
]
}
abaikan gambar google1 yang sama, saya hanya mencoba agar kodenya berfungsi terlebih dahulu.
Kemudian, di Tampilan Penelusuran, saya memiliki:
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)
}
}
}
}
untuk menampilkan informasi di 'let specialtyList' sebagai scrollView
Karena setiap dunia yang ditampilkan berfungsi sebagai tombol, saya mencoba itu, ketika saya pergi ke tujuan (yang SearchBar () dalam hal ini), saya ingin menampilkan informasi berbeda tergantung pada teks NavigationLink yang ditekan.
Bagaimana saya bisa melakukannya dengan menggunakan urutan dalam daftar 'daftar khusus' dan bagaimana saya bisa dengan mudah mencetak, di tujuan, nama yang sama dari teks Tautan Navigasi yang ditekan?
Jawaban
Saya berasumsi ini dia
Catatan: cobalah untuk menghindari penamaan yang sama untuk tipe (seperti, Spesialisasi, huruf kapital) dan instance / nilai (seperti, spesialitas, huruf kecil), jika tidak maka akan membingungkan dan kompilator dan Anda.
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)
}
}
}
}
dan sekarang terlihat
struct SearchBar: View {
let item: Specialty
var body: some View {
Text(item.type)
// .. other code
}
}