swift 4 多个选择器视图不工作。我有三个数组,但只显示 "strBlood"

swift 4 multiple picker view not working. I have three arrays ,but only "strBlood" is showing

swift 4 多个选择器视图不工作。我有三个数组,但只有 "strBlood" 显示了准确的数组,其他 strcountry 和 strgender 没有显示在选择器视图中,当我点击第三个标签时代码崩溃,给我信号 sigbart[=21 的错误=]

多个选择器视图在选择器视图中不显示数据 swift 4,我已经看了很多教程,但没有人解决我的问题,请检查并回答我。
当我实现 3 个选择器视图时,数据仅显示第一个选择器视图,即 (strblood) 而不是其他数组

下面的代码工作正常,但在点击其他标签时在选择器视图中显示数组时出现一个错误 ("lblblood"."lblcountry")

import UIKit
import Foundation

class RegisterViewController: UIViewController  {

    var strBlood = ["O+","O-","O","A","B+"]
    var  strcountry = ["India","Canada","USA"]
    var strgender = ["Male","Female"]

    var selectedBlood: String?
    var selectedCountry: String?
    var selectedGender: String?

    @IBOutlet weak var txtGender: UITextField!
    @IBOutlet weak var txtCountry: UITextField!
    @IBOutlet weak var lblBloodGroup: UITextField!


    override func viewDidLoad() {
        super.viewDidLoad()
             self.chooseCountry()
             self.chooseBlood()
             self.choosGender()
    }

    func chooseBlood(){
        let bloodPicker = UIPickerView()
        bloodPicker.delegate = self
        self.lblBloodGroup.inputView = bloodPicker
    }

    func chooseCountry(){

        let countryname = UIPickerView()
        countryname.delegate = self
        self.txtCountry.inputView = countryname
    }
    func choosGender() {

    let gender1 = UIPickerView()
    gender1.delegate = self
    self.txtGender.inputView = gender1
    }

}
extension RegisterViewController : UIPickerViewDelegate , UIPickerViewDataSource {

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

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

        if lblBloodGroup.isEnabled {
            print("BLOOD SELECTED")
           return strBlood.count

        }
        else if txtCountry.isEnabled{
            print("COUNTRY SELECTED")

            return strcountry.count
        }else {
             print("GENDER SELECTED")
            return strgender.count
        }

        }

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

        if lblBloodGroup.isEnabled{
            print("BLOOD SELECTED1")
            return strBlood[row]


        }else if txtCountry.isEnabled{

            return strcountry[row]
        }else {
            return strgender[row]
        }

       }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)  {
        if lblBloodGroup.isEnabled{
            selectedBlood = strBlood[row]
            lblBloodGroup.text = selectedBlood

        }else if txtCountry.isEnabled{
            selectedCountry = strcountry[row]
            txtCountry.text = selectedCountry
        }else {
            selectedGender = strgender[row]
            txtGender.text = selectedGender
        }
    }
}

实现这个isEnabled也于事无补。您需要使用 isEditing 并且如果用户单击任何 UITextField 并且您的代码将是:

import UIKit
import Foundation

class ViewController: UIViewController  {

    var strBlood = ["O+","O-","O","A","B+"]
    var strcountry = ["India","Canada","USA"]
    var strgender = ["Male","Female"]

    var selectedBlood: String?
    var selectedCountry: String?
    var selectedGender: String?

    @IBOutlet weak var txtGender: UITextField!
    @IBOutlet weak var txtCountry: UITextField!
    @IBOutlet weak var lblBloodGroup: UITextField!


    override func viewDidLoad() {
        super.viewDidLoad()
        self.chooseCountry()
        self.chooseBlood()
        self.choosGender()
    }

    func chooseBlood(){
        let bloodPicker = UIPickerView()
        bloodPicker.delegate = self
        self.lblBloodGroup.inputView = bloodPicker
    }

    func chooseCountry(){

        let countryname = UIPickerView()
        countryname.delegate = self
        self.txtCountry.inputView = countryname
    }
    func choosGender() {

        let gender1 = UIPickerView()
        gender1.delegate = self
        self.txtGender.inputView = gender1
    }
}
extension ViewController : UIPickerViewDelegate , UIPickerViewDataSource {

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

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

        if lblBloodGroup.isEditing {
            print("BLOOD SELECTED")
            return strBlood.count

        }
        else if txtCountry.isEditing{
            print("COUNTRY SELECTED")

            return strcountry.count
        }else {
            print("GENDER SELECTED")
            return strgender.count
        }

    }

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

        if lblBloodGroup.isEditing{
            print("BLOOD SELECTED1")
            return strBlood[row]


        }else if txtCountry.isEditing{

            return strcountry[row]
        }else {
            return strgender[row]
        }

    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)  {
        if lblBloodGroup.isEditing{
            selectedBlood = strBlood[row]
            lblBloodGroup.text = selectedBlood

        }else if txtCountry.isEditing{
            selectedCountry = strcountry[row]
            txtCountry.text = selectedCountry
        }else {
            selectedGender = strgender[row]
            txtGender.text = selectedGender
        }
    }
}

结果将是: