我发现一个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)
}
}
最佳答案
在注释中的描述方式是,如果以前的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]
}
}
关于swift - 多个UIPickerView在Swift中以编程方式选择第一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53424898/