如何多次使用UIPickerView和TextField?

时间:2018-04-05 16:10:15

标签: ios swift uipickerview textfield pickerview

下面是我的代码,这允许一个Textfield有一个弹出的pickerView作为输入源。我想知道我需要添加什么来允许第二个TextField也有一个弹出的pickerView作为输入源。

我设法让firstNametextfield工作,但还没设法让secondNames工作。

class RefereeViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource, UITextFieldDelegate, UINavigationControllerDelegate
{

@IBOutlet weak var firstNameTextField: UITextField!

@IBOutlet weak var secondNameTextField: UITextField!


var firstNames = ["Lewis", "Jason","Alex","Mason"]

var secondNames = ["Davies", "Jones","Rees","Kristensen"]


var pickerView = UIPickerView()

override func viewDidLoad()

 {

super.viewDidLoad()

pickerView.delegate = self

pickerView.dataSource = self

        firstNameTextField.inputView = pickerView
        firstNameTextField.textAlignment = .center
        firstNameTextField.placeholder = "Select Name"
}

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

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

            return firstNames.count

    }

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

        return firstNames[row]

    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    {
            firstNameTextField.text = reports[row]
    }

1 个答案:

答案 0 :(得分:0)

class RefereeViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource, UITextFieldDelegate, UINavigationControllerDelegate
{

    @IBOutlet weak var firstNameTextField: UITextField!

    @IBOutlet weak var secondNameTextField: UITextField!


    var firstNames = ["Lewis", "Jason","Alex","Mason"]

    var secondNames = ["Davies", "Jones","Rees","Kristensen"]


    let firstNamePicker = UIPickerView()
    let secondNamePicker = UIPickerView()

    override func viewDidLoad()

    {

        super.viewDidLoad()

        firstNamePicker.delegate = self
        firstNamePicker.dataSource = self
        secondNamePicker.delegate = self
        secondNamePicker.dataSource = self

        firstNameTextField.inputView = firstNamePicker
        firstNameTextField.textAlignment = .center
        firstNameTextField.placeholder = "Select First Name"

        secondNameTextField.inputView = secondNamePicker
        secondNameTextField.textAlignment = .center
        secondNameTextField.placeholder = "Select Second Name"

    }

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

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

        return pickerView == firstNamePicker ? firstNames.count : secondNames.count

    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
    {
        if pickerView == firstNamePicker {
            firstNameTextField.text = firstNames[row]
        } else {
            secondNameTextField.text = secondNames[row]
        }
    }

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

        return pickerView == firstNamePicker ? firstNames[row] : secondNames[row]
    }
}