将它用作输入视图时从 UIPickerView 获取 UITextField
Get UITextField from UIPickerView when using it as input view
有没有可能从UIPickerView
得到UITextField
?对于提交的文本,我将 UIPickerView
设置为 inputView
。我的屏幕上只有几个文本字段,我想简单地获取显示选择器视图的当前文本字段。
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
// something like let textField = pickerView.requestedTextField
}
有什么办法吗?
为您的 pickerview
和 textfield
设置相同的 tag
。
现在你可以在 didSelectRow
中获取你的标签了,
let myTag = pickerView.tag
然后从 myTag
你可以得到你的 textfield
类似的东西,
let myTextField = self.view.viewWithTag(myTag) as! UITextField
如果您有多个显示 pickerView 的 textField
,则像这样在您的 viewController 中再创建一个 textField
实例,并在 textFieldDidBeginEditing
中使用此对象并分配textField
对 tempTextField 的引用。
var selectedTextField: UITextField = UITextField()
func textFieldDidBeginEditing(textField: UITextField!) {
self.selectedTextField = textField
}
现在在 PickerView
的 didSelectRow
方法中使用此 textField o 知道当前的编辑字段。
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
}
}
注意:例如我用过countryField
和stateField
你可以用textField来设置文本。
正如用户 Lion 在他的 中正确指出的那样,您可以通过给 pickerView
和 textField
一个标签来获得相应的 UITextField
。然而,给他们 same 标签的问题是 viewWithTag
可能 return 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
}
有没有可能从UIPickerView
得到UITextField
?对于提交的文本,我将 UIPickerView
设置为 inputView
。我的屏幕上只有几个文本字段,我想简单地获取显示选择器视图的当前文本字段。
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
// something like let textField = pickerView.requestedTextField
}
有什么办法吗?
为您的 pickerview
和 textfield
设置相同的 tag
。
现在你可以在 didSelectRow
中获取你的标签了,
let myTag = pickerView.tag
然后从 myTag
你可以得到你的 textfield
类似的东西,
let myTextField = self.view.viewWithTag(myTag) as! UITextField
如果您有多个显示 pickerView 的 textField
,则像这样在您的 viewController 中再创建一个 textField
实例,并在 textFieldDidBeginEditing
中使用此对象并分配textField
对 tempTextField 的引用。
var selectedTextField: UITextField = UITextField()
func textFieldDidBeginEditing(textField: UITextField!) {
self.selectedTextField = textField
}
现在在 PickerView
的 didSelectRow
方法中使用此 textField o 知道当前的编辑字段。
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
}
}
注意:例如我用过countryField
和stateField
你可以用textField来设置文本。
正如用户 Lion 在他的 pickerView
和 textField
一个标签来获得相应的 UITextField
。然而,给他们 same 标签的问题是 viewWithTag
可能 return 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
}