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

Ami*_*mit 5 iphone uipickerview ios swift

我目前正在做一个小项目,我有一个 viewController,它有 4 个 textFields,其中 3 个可以正常工作。他们接受 String 对象。但是,第 4 个 textField 应该调出带有 4 个可选项目的 UIPickerView。

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

     @IBOutlet var pickerTextfield: UITextField!
     @IBOutlet var itemPicker: UIPickerView! = UIPickerView()  
Run Code Online (Sandbox Code Playgroud)

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

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

var seasonalItems = ["Spring", "Summer", "Fall", "Winter"]
Run Code Online (Sandbox Code Playgroud)

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

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

    pickerTextfield.delegate = self
Run Code Online (Sandbox Code Playgroud)

其余的实现:

// 下面这些行是 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
}
Run Code Online (Sandbox Code Playgroud)

所以最终结果是当我点击pickerTextfield应用程序中的对象时,它显示数组的第一项(Spring)但在 UITextField 对象中的文本中,但它没有显示 UIPickerView 对象和其他可选项目,我可以选择一个,然后在选择时隐藏它。

我的问题是,我在这里做错了什么或做错了什么?我一直试图自己解决这个问题,但我似乎没有得到 Swift 和故事板的清晰示例。我宁愿不在情节提要中拖动 UIPickerView 而是我试图实现的方式。谢谢

Yuv*_*inh 4

您可以给出您想要在其中显示选择器视图的UIPickerView位置。在这种情况下,您也不需要最初隐藏选取器视图。inputViewTextField

pickerTextfield.inputView = itemPicker
Run Code Online (Sandbox Code Playgroud)

当您使用UIPickerView任何inputViewUITextField,当您点击时,将显示TextField而不是默认键盘。PickerView