【问题标题】:Programmatically implementing a UIPickerView when user taps UITextfield当用户点击 UITextfield 时以编程方式实现 UIPickerView
【发布时间】:2017-12-16 21:00:16
【问题描述】:

我目前正在做一个小项目,我有一个视图控制器,它有 4 个文本字段,其中 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,而是我尝试实现的方式。谢谢

【问题讨论】:

    标签: ios iphone swift uipickerview


    【解决方案1】:

    您可以将UIPickerView 指定为inputView,用于您要在其中显示选择器视图的TextField。 在这种情况下,您也不需要最初隐藏选择器视图。

    pickerTextfield.inputView = itemPicker
    

    当您将UIPickerView 用作inputView 或任何UITextField 时,当您点击TextField 而不是默认键盘时,将显示PickerView

    【讨论】:

    • 还有其他方法吗?这仍然不起作用
    • @Amit 它似乎有效。您遇到了什么问题?。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多