PickerView - ViewController不符合协议UIPickerViewDataSource

时间:2016-12-01 19:09:33

标签: swift datasource uipickerview

我在PickerView遇到麻烦。首先,无论我做什么,我的ViewController都不接受UIPickerViewDataSource。其次,PickerView只会显示第一行。我需要它来显示两行并显示在一个名为school

的TextField中

我做错了什么?????

在我发疯之前,任何人都可以帮助我

enter code here
    private let typeComponent = 0
    private let areaComponent = 1
    private let typeOption = ["HighSchool of", "College of", "University of"]
    private let areaOption = ["Miami", "Los Angeles", "New York"]

        // PickerView - School  2 af 5
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
        return 2
    }
    // PickerView - School  3 af 5
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if component == typeComponent {
            return typeOption.count
        } else {
            return areaOption.count
    }
    }
    // PickerView - School  4 af 5
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if component == typeComponent {
            return typeOption[row]
        } else {
        return areaOption[row]

    }
    }
    // PickerView - School  5 af 5
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
//        school.text = pickOption[component][row]

        let typeRow = pickerView.selectedRow(inComponent: (0))
        let areaRow = pickerView.selectedRow(inComponent: (1))
        let type = typeOption[typeRow]
        let area = areaOption[areaRow]
        school.text = "\(type)\(area)"
    }


    override func viewDidLoad() {
        super.viewDidLoad()



        //Placeholder TextView Interest and about 1 ag 3
        Interest.delegate = self
        Interest.text = "What are your interests..."
        Interest.textColor = UIColor.lightGray

        about.delegate = self
        about.text = "Tell about yourself..."
        about.textColor = UIColor.lightGray

        //PickerView School  1 af 5
        let pickerView = UIPickerView()
        pickerView.delegate = self
        pickerView.dataSource = self
        pickerView.backgroundColor = UIColor.white
        school.inputView = pickerView

2 个答案:

答案 0 :(得分:1)

实施UIPickerViewDataSource所需的所有方法。如果您不符合UIPickerViewDataSource,则会给您错误。

在符合要求的班级中实施所需的方法

Swift 2.0

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

Swift 3.0

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

答案 1 :(得分:0)

确保您的班级符合UIPickerViewDataSource协议,如下所示:

class YourViewController: UIPickerViewDataSource {
//
}

更新:

对于 Swift 3 ,您必须使用此数据源函数:

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

而不是你使用的那个。