标题说明了一切。我正在尝试分配用户将从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还有其他一些建议,但我不知道使用哪一个以及如何使用。
请帮忙!
谢谢!
答案 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()