当用户点击UITextfield时,以编程方式实现UIPickerView

问题描述:

我目前正在研究一个小项目,并且我有一个viewController,它有4个textFields,它们可以正常工作。他们采取字符串对象。但是,第4个textField应该带有一个带有4个可选项目的UIPickerView。当用户点击UITextfield时,以编程方式实现UIPickerView

到目前为止,这是我在我的控制器实现这一点:

 @IBOutlet var pickerTextfield: UITextField! 
    @IBOutlet var itemPicker: UIPickerView! = UIPickerView() 

pickerTextfield是UITextField对象是第四场。 itemPicker是一个未链接的UIPickerView,我想以编程方式创建。

右下面这些属性,我有一个项目为UIPickerView对象的数组:

var seasonalItems = ["Spring", "Summer", "Fall", "Winter"] 

在我viewDidLoad中方法我有这个如下:

itemPicker.hidden = true; 
    pickerTextfield.text = seasonalItems[0] 

    pickerTextfield.delegate = self 

而其余的的实施:

// Below the lines i s的文字的选择器

func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int{ 
    return 1 
} 

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

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

func pickerView(pickerView: UIPickerView!, didSelectRow row: Int, inComponent component: Int) 
{ 
    pickerTextfield.text = seasonalItems[row] 
    itemPicker.hidden = true; 
} 

func textFieldShouldBeginEditing(textField: UITextField) -> Bool { 
    itemPicker.hidden = false 
    return false 
} 

所以从这个最后的结果是,当我点击在该应用中的pickerTextfield对象,它显示了阵列的第一项(弹簧),但在UITextField对象内执行,但它不会显示UIPickerView对象与其他可选项目,我可以选择其中一个,然后在选定时隐藏它。

我的问题是,我在哪里或在做什么错在这里?我一直试图自己弄清楚这一点,但我似乎没有得到很好的清晰的例子与斯威夫特和故事板。我宁愿不要在故事板中拖动一个UIPickerView,而是以我试图实现的方式。谢谢

您可以给UIPickerView作为inputView为您的TextField其中您要显示选取器视图。 在这种情况下,您也不需要初始隐藏选取器视图。

pickerTextfield.inputView = itemPicker 

当您使用UIPickerView任何UITextFieldinputView那么当你在TextField,而不是默认的键盘PickerView将显示挖掘。

+0

任何人有任何其他方法?这仍然不起作用 – Amit 2015-04-04 04:41:14

+0

@认为它似乎工作。你遇到了什么问题? – webjunkie 2016-08-11 02:16:29