如何从pickerView didSelectRow委托方法更新警报控制器的UITextField上的文本?

时间:2017-04-19 15:00:20

标签: ios swift uitextfield uipickerview uialertcontroller

当我的UIPickerView滚动时,我想更新UIAlertController中的UITextField。

我尝试在文字字段上添加标记:

myTextField.addTextField(configurationHandler: { (textField) -> Void in
        textField.inputView = self.myPickerView
        textField.tag = 2
        textField.delegate = self
})

对于pickerView委托方法didSelectRow我声明了一个ivar pickerViewName来存储行的名称:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    pickerViewName = myArray[row].name
    //Update UITextField text here, but unable to get it's tag.
}

以及textFieldDidBeginEditing委托方法:

func textFieldDidBeginEditing(_ textField: UITextField) {

    if (textField.tag == 2)
    {
        textField.text = pickerViewName!
    }

}

然而,它无法正常工作。当我上下滚动时,文本字段不会更新。如果你能帮助我指出我的错误在哪里,我们非常感激!谢谢。

1 个答案:

答案 0 :(得分:1)

在您的代码中,您正在执行以下操作:如果选择器滚动,则为变量指定新名称。但是,您永远不会为文本字段调用更新。开始编辑文本字段后,将分配您的名称。我不确定是否需要,否则你必须手动调用它。