显示UIPickerView文本字段已选中,然后在选中后隐藏

Tim*_*ign 20 uipickerview ios swift

我正在尝试创建一个文本框,当它被选中时,UIPickerView会打开,并提供可供选择的选项.选择后,UIPickerView将隐藏,所选项目将显示在文本框中.我尝试了在网上找到的不同代码,但我无法让它工作.如果有人可以为我建议一个完整的代码,或者告诉我在我的代码中我做错了什么,这将是非常棒的.非常感谢.

这是我的代码:

@IBOutlet var textfieldBizCat: UITextField!
@IBOutlet var pickerBizCat: UIPickerView! = UIPickerView()

var bizCat = ["Cat One", "Cat Two", "Cat Three"]


override func viewDidLoad() {
    super.viewDidLoad()

    var bizCatCount = bizCat.count

    self.textfieldBizCat.inputView = pickerView

}

// 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 bizCat.count
}

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

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

}
Run Code Online (Sandbox Code Playgroud)

tba*_*nes 44

如果我理解你的问题,你想要:

  1. 有一个UITextField显示选中的文本
  2. 当用户点击时打开一个选择器 UITextField
  3. 选择项目(在选择器中)时关闭选取器,并将其设置在`UITextField中

这是管理它的完整代码,您只需要链接您的代表UITextField:

@IBOutlet var textfieldBizCat: UITextField!
@IBOutlet var pickerBizCat: UIPickerView! = UIPickerView()

var bizCat = ["Cat One", "Cat Two", "Cat Three"]


override func viewDidLoad() {
    super.viewDidLoad()
    pickerBizCat.hidden = true;
    textfieldBizCat.text = bizCat[0]
}

// 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 bizCat.count
}

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

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int)
{
    textfieldBizCat.text = bizCat[row]
    pickerBizCat.hidden = true;
}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
    pickerBizCat.hidden = false
    return false
}
Run Code Online (Sandbox Code Playgroud)

我从你的代码改变了什么:

  • 用于UITextField显示选择器中时UITextFieldDelegate被选择
  • 选择项目后隐藏选择器,然后设置 UITextField
  • 在选择UITextField任何项目时设置选取器的第一行