संरचना के बीच @binding के साथ समस्याओं

Aug 17 2020

मेरे कोड में मेरे पास है:

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

समान google1 छवियों को अनदेखा करें, मैं केवल पहले काम करने के लिए कोड प्राप्त करने की कोशिश कर रहा हूं।

फिर, खोज के दृश्य में, मेरे पास है:

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

स्क्रॉलव्यू के रूप में 'लेट स्पेशलिस्टलिस्ट' में जानकारी दिखाने के लिए

जैसा कि प्रत्येक प्रदर्शित दुनिया एक बटन के रूप में काम करती है, Im कोशिश कर रहा हूं कि, जब मैं इस मामले में गंतव्य (जो SearchBar () हो) पर जाऊं, तो मैं चाहता हूं कि नेविगेशनलिंक पाठ के आधार पर अलग-अलग जानकारी दिखाई जाए जो दबाया जाता है।

मैं 'स्पेशलिस्टलिस्ट' सूची में आदेश का उपयोग करके इसे कैसे कर सकता हूं और गंतव्य में, नेविगेशनलींक टेक्स्ट का वही नाम जो दबाया गया था, कैसे प्रिंट कर सकता है?

जवाब

Asperi Aug 17 2020 at 10:42

मुझे लगता है कि यह है

नोट: प्रकार (जैसे, विशेषता, पूंजीकृत) और उदाहरण / मान (जैसे, विशेषता, नीची) के लिए एक ही नामकरण से बचने की कोशिश करें, अन्यथा यह भ्रमित और संकलक हो सकता है और आप।

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

और अब देखने में

struct SearchBar: View {
   let item: Specialty

   var body: some View {
      Text(item.type)

      // .. other code
   }
}