是否有可能从UITextField
获取UIPickerView
?我将UIPickerView
设为inputView
,用于提交文字。我屏幕上的文本字段很少,我想简单地获取显示选择器视图的当前文本字段。
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
// something like let textField = pickerView.requestedTextField
}
有什么办法吗?
答案 0 :(得分:4)
如果有多个textField
显示pickerView,那么在viewController中再创建一个textField
实例,并在textFieldDidBeginEditing
中使用此对象并指定{{1}的引用那个tempTextField。
textField
现在var selectedTextField: UITextField = UITextField()
func textFieldDidBeginEditing(textField: UITextField!) {
self.selectedTextField = textField
}
的{{1}}方法使用此textField o知道当前的编辑字段。
didSelectRow
注意:例如,我使用了PickerView
和func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if self.selectedTextField == countryField {
//Set text for countryField
}
else self.selectedTextField == stateField {
//Set text for stateField
}
}
您可以使用textField来设置文字。
答案 1 :(得分:2)
将同一tag
设置为pickerview
和textfield
两者。
现在您可以在didSelectRow
中找到您的代码,
let myTag = pickerView.tag
然后从myTag
您可以获得textfield
类似的内容,
let myTextField = self.view.viewWithTag(myTag) as! UITextField
答案 2 :(得分:2)
正如用户Lion在他的answer中正确指出的那样,您可以通过向UITextField
和pickerView
提供标记来获得相应的textField
。但是,为其提供相同的标记的问题是viewWithTag
可能会返回UIPickerView
本身,具体取决于子视图的顺序。
由于这是不可靠的,更好的解决方案是给UITextField
赋予UIPickerView
标签的负数(例如1和-1)。要获得UITextView
,您可以在方法中执行类似的操作,一旦您将选择器视图和文本视图分配给标记:
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let textField = view.viewWithTag(-pickerView.tag) as! UITextField
//Use textField
}