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

时间:2015-03-31 04:29:33

标签: ios iphone swift uipickerview

我目前正在开发一个小项目,我有一个viewController,它有4个textFields,其中3个工作正常。它们采用String对象。但是,第4个textField应该会显示一个带有4个可选项的UIPickerView。

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

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

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

在这些属性的正下方,我有一个UIPickerView对象的项目数组:

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

在我的 viewDidLoad 方法中,我有以下内容:

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

    pickerTextfield.delegate = self

其余的实施:

//这些行下面是Picker的实现

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对象时,它会显示数组的第一项(Spring),但是在UITextField对象中的文本中却没有显示UIPickerView对象与其他可选项目,我可以选择一个,然后在选中时隐藏它。

我的问题是,我在哪里或者我做错了什么?我一直试图自己解决这个问题,但我似乎没有得到Swift和故事板的清晰例子。我更倾向于不在故事板中拖动UIPickerView,而是我试图实现的方式。感谢

1 个答案:

答案 0 :(得分:2)

您可以为要显示选择器视图的UIPickerView提供inputView TextField。 在这种情况下,您也不需要最初隐藏选择器视图。

pickerTextfield.inputView = itemPicker

当您使用UIPickerView作为任何inputView的{​​{1}}时,当您点按UITextField而不是默认键盘TextField时,会显示。