将从UIPicker中选择的值分配给Swift中的UITextField(以及如何显示和隐藏它)

时间:2014-08-02 22:08:55

标签: ios swift uipickerview ios8

标题说明了一切。我正在尝试分配用户将从UIPicker中选择的值(性别),然后该值将显示为使用Swift的UITextField输入。

这是我的代码:

class RegistrationViewController: UIViewController, UIPickerViewDelegate, UITextFieldDelegate {

@IBOutlet var getGender: UIPickerView! = UIPickerView()

@IBOutlet var genderTextField: UITextField! = nil

let gender = ["Male", "Female", "Other"]

override func viewDidLoad() {
    super.viewDidLoad()

    self.genderTextField.inputView = pickerView

    // Do any additional setup after loading the view.
}

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

// returns the number of 'columns' to display.
func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{
    return 1
}

// returns the # of rows in each component..
func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{
    return gender.count
}

func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String! {
    return gender[row]
}

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
    genderTextField.text = "\(gender[row])"

}

我知道如果不使用文本字段而是使用标签并将其格式化为文本字段,则可以实现这一点。然后更改标签的值。

我还想知道在单击标签/文本字段时如何显示/隐藏UIPicker。任何人都可以帮我解决这个问题吗?

非常感谢你的建议!

干杯。


更新

我已经完成了所有工作,但编译器唯一抱怨的是注释// ERROR的行。正如我所提到的,它不仅仅接受这个:

self.genderTextField.inputView = pickerView   //ERROR -> Requires more declarations! Read update section below!

它要求我提供额外的声明,例如:

pickerView!(pickerView: UIPickerView?, didSelectRow: Int, inComponent: Int) 

pickerView!(pickerView: UIPickerView?, numberOfRowsInComponent: Int)

Xcode还有其他一些建议,但我不知道使用哪一个以及如何使用。

请帮忙!

谢谢!

2 个答案:

答案 0 :(得分:3)

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
    textField.text = "\(gender[row])"
}

显示/隐藏选择器(在viewDidLoad中)

self.textField.inputView = pickerView

答案 1 :(得分:-1)

试试这个:self.txtSelectareRate.inputView = UIPickerView()