मुझे ऐसा लगता है कि मैं करीब हूं क्योंकि नीचे दिया गया कोड स्थिर UIPickerViews के लिए काम करता है, लेकिन मैं पहले चयन के आधार पर अपने पिकरव्यू को गतिशील रूप से सेटअप करने का प्रयास कर रहा हूं और ट्यूटोरियल की समीक्षा करने और खोज करने के बावजूद मैं अपने दिमाग को इसके आसपास नहीं लपेट सकता। उदाहरण के लिए, यदि आप myPickerData में "ब्राउन" चुनते हैं, तो केवल "अंडरग्रेजुएट" myPickerData2 में प्रदर्शित होना चाहिए या यदि आप "डार्टमाउथ" चुनते हैं, तो आपको केवल "स्नातक" और "एमबीए" प्राप्त करना चाहिए और यदि आप "कोलंबिया" या "हार्वर्ड" का चयन करते हैं तो अंतिम , आपको "स्नातक", "जेडी", "एमबीए" मिलता है।

var myPickerData = ["Select Your Dream College", “Brown", "Columbia", “Dartmouth”,  "Harvard" ]

var myPickerData2 = ["Undergraduate", "JD", "MBA"]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 2
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

    if component == 0 {
        return myPickerData.count
    }

    return myPickerData2.count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

    if component == 0 {
        return myPickerData[row] as String
    }
    return myPickerData2[row] as String
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    uniSelected = myPickerData[pickerView.selectedRow(inComponent: 0)]

    collegeSelected = myPickerData2[pickerView.selectedRow(inComponent: 1)]
}
0
Ben 10 सितंबर 2018, 22:09

1 उत्तर

सबसे बढ़िया उत्तर

तुम कोशिश कर सकते हो

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

     if component == 0 {

         let str = myPickerData[row]

         if str == "Brown" {

            myPickerData2 = ["Undergraduate"]
         }
         else if str == "Dartmouth" {

            myPickerData2 = ["Undergraduate", "MBA"]
         }
         else {

            myPickerData2 = ["Undergraduate", "JD", "MBA"]

         }

         pickerView.reloadComponent(1)

      }
      else {

         uniSelected = myPickerData[pickerView.selectedRow(inComponent: 0)]

         collegeSelected = myPickerData2[pickerView.selectedRow(inComponent: 1)]
      }

}

//

इसमें डुप्लीकेट हो सकते हैं लेकिन आप इसे आजमा सकते हैं

let mainDic:[String:[String]] = ["Select Your Dream College":[],
                 "Brown":["Undergraduate"],
                 "Dartmouth":["Undergraduate", "MBA"],
                 "Columbia":  ["Undergraduate", "JD", "MBA"],
                 "Harvard",["Undergraduate", "JD", "MBA"]]

फिर

myPickerData2 = mainDic[myPickerData[row]]!

pickerView.reloadComponent(1)

और इसे कंपोनेंट 0 . में इस्तेमाल करें

myPickerData = Array(mainDic.keys)

अपना डेटा बनाएं स्रोत mainDic है और कुंजी के साथ myPickerData के रूप में व्यवहार करें और वर्तमान में चयनित कुंजी का मान myPickerData2

संपादित करें: viewDidLoad में

myPickerData = Array(mainDic.keys)
myPickerData2 = mainDic["Select Your Dream College"]! // it's default or simply []
1
Sh_Khan 10 सितंबर 2018, 23:31