当我的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!
}
}
然而,它无法正常工作。当我上下滚动时,文本字段不会更新。如果你能帮助我指出我的错误在哪里,我们非常感激!谢谢。
答案 0 :(得分:1)
在您的代码中,您正在执行以下操作:如果选择器滚动,则为变量指定新名称。但是,您永远不会为文本字段调用更新。开始编辑文本字段后,将分配您的名称。我不确定是否需要,否则你必须手动调用它。