对于一个pickerView
,我发现相同的情况,我会说如下相同的单词:
我有一个pickerView
,当在内部单击textField
时会弹出。用户在pickerView
中选择他们的位置,并将其放入textField
中。
打开pickerView
时,滑块位于第一个元素上,但是如果单击完成按钮以最小化pickerView
,则没有选择任何元素(即,您必须向下滚动并向上备份选择第一个元素)
我可以制造textField
和pickerView
。但是我有3个textFields和3个pickerViews。我可以为每个pickerView
做吗?
在下面的代码块中,只能用一个。
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == yourTextField {
self.yourPickerView.selectRow(0, inComponent: 0, animated: true)
self.pickerView(yourPickerView, didSelectRow: 0, inComponent: 0)
}
}
答案 0 :(得分:0)
在注释中的描述方式,如果以前的textField的文本不为空,则当用户单击特定的textField时,您要开始编辑textField。因此,请使用textFieldShouldBeginEditing
委托方法,如下所示:
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
if textField == textField1 {
return true
} else if textField == textField2 && !textField1.isEmpty {
return true
} else if textField == textField3 && !textField2.isEmpty {
return true
}
return false
}
然后,当textField开始编辑时,显示特定的pickerView
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField == textField1 {
// show pickerView1
} else if textField == textField2 {
// show pickerView2
} else if textField == textField3 {
// show pickerView3
}
}
,然后当用户选择行时,您想要更改textField中的文本
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView == pickerView1 {
textField1.text = items1[row]
} else if pickerView == pickerView2 {
textField2.text = items2[row]
} else if pickerView == pickerView3 {
textField3.text = items3[row]
}
}