Ios 为一个字段而不是另一个字段正确填充数据选择器

Ios 为一个字段而不是另一个字段正确填充数据选择器,ios,swift,uipickerview,Ios,Swift,Uipickerview,我有一个测试项目,我用它来开发我的代码,然后在我的实际项目中实现它。在测试中,我有两个字段,当点击该字段时,应该会显示一个填充了该字段数组的数据选择器。这对于第一个字段(enterSeason)很好,但是第二个字段(enterSport)只返回键盘。我已经遍历了调试器,变量是正确的,两个字段的工作方式相同。我错过了什么?多谢各位 import UIKit class ViewController: UIViewController, UIPickerViewDelegate, UIPicker

我有一个测试项目,我用它来开发我的代码,然后在我的实际项目中实现它。在测试中,我有两个字段,当点击该字段时,应该会显示一个填充了该字段数组的数据选择器。这对于第一个字段(enterSeason)很好,但是第二个字段(enterSport)只返回键盘。我已经遍历了调试器,变量是正确的,两个字段的工作方式相同。我错过了什么?多谢各位

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {

@IBOutlet var enterSeason: UITextField!

@IBOutlet var enterSport: UITextField!

var dataPickerView = UIPickerView()
var season = ["2013", "2014", "2015"] //multi-season
//var season = ["2015"] //single-season
var sport = ["Baeball", "Football", "Basketball", "Hockey"]
var activeDataArray = []

override func viewDidLoad() {
    super.viewDidLoad()

    enterSeason.inputView = dataPickerView
    dataPickerView.delegate = self
    dataPickerView.dataSource = self

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func textFieldDidBeginEditing(textField: UITextField) {
    if textField == enterSeason {
        activeDataArray = season
    } else
        if textField == enterSport {
            activeDataArray = sport
        }
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return activeDataArray.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return activeDataArray[row] as! String
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if activeDataArray == season {
        enterSeason.text = season[row] as! String
    }
    else if activeDataArray == sport {
        enterSport.text = sport[row] as! String
    }

}

}
这是我的第一个项目,我从S.O.那里学到了很多。感谢您对所有患者的回复。

包括

enterSport.inputView = dataPickerView
设置正确的第一响应者。

包括

enterSport.inputView = dataPickerView
设置正确的第一响应者。

包括

enterSport.inputView = dataPickerView
设置正确的第一响应者。

包括

enterSport.inputView = dataPickerView

设置正确的第一响应者。

将dataPickerView设置为enterSport的inputview

enterSport.inputView = dataPickerView;

将dataPickerView设置为enterSport的inputview

enterSport.inputView = dataPickerView;

将dataPickerView设置为enterSport的inputview

enterSport.inputView = dataPickerView;

将dataPickerView设置为enterSport的inputview

enterSport.inputView = dataPickerView;


非常感谢。我有一种感觉,我忽略了一些简单的事情。这些是最好的问题;)我有一个必然的问题。当我从第一个字段(enterSeason)输入数据,然后点击第二个字段(enterSport)时,数据采集器仍然具有前一个字段数组中的数据。我运行了调试器,它正在将activeDataArray变量设置为新值,但在选择器中填充的数组没有更改。我需要清理捡拾器吗?我该怎么做?试着在
textfielddebeginediting
中调用dataPicker.reloadAllComponents()。将行
dataPickerView.reloadAllComponents()
一直移动到函数末尾。谢谢。我有一种感觉,我忽略了一些简单的事情。这些是最好的问题;)我有一个必然的问题。当我从第一个字段(enterSeason)输入数据,然后点击第二个字段(enterSport)时,数据采集器仍然具有前一个字段数组中的数据。我运行了调试器,它正在将activeDataArray变量设置为新值,但在选择器中填充的数组没有更改。我需要清理捡拾器吗?我该怎么做?试着在
textfielddebeginediting
中调用dataPicker.reloadAllComponents()。将行
dataPickerView.reloadAllComponents()
一直移动到函数末尾。谢谢。我有一种感觉,我忽略了一些简单的事情。这些是最好的问题;)我有一个必然的问题。当我从第一个字段(enterSeason)输入数据,然后点击第二个字段(enterSport)时,数据采集器仍然具有前一个字段数组中的数据。我运行了调试器,它正在将activeDataArray变量设置为新值,但在选择器中填充的数组没有更改。我需要清理捡拾器吗?我该怎么做?试着在
textfielddebeginediting
中调用dataPicker.reloadAllComponents()。将行
dataPickerView.reloadAllComponents()
一直移动到函数末尾。谢谢。我有一种感觉,我忽略了一些简单的事情。这些是最好的问题;)我有一个必然的问题。当我从第一个字段(enterSeason)输入数据,然后点击第二个字段(enterSport)时,数据采集器仍然具有前一个字段数组中的数据。我运行了调试器,它正在将activeDataArray变量设置为新值,但在选择器中填充的数组没有更改。我需要清理捡拾器吗?我该怎么做?试着在
textfielddebeginediting
中调用dataPicker.reloadAllComponents()。将行
dataPickerView.reloadAllComponents()
一直移动到函数末尾。