ios - 如何确保在文本字段中仅选择选择器数据
问题描述
我在 UITextfield 中为选择器函数使用以下代码,我应该如何确保选择数组中的值并且没有其他数据输入我共享下面的代码,我使用“守卫”来检查字段是否为空与否代码
var spinneCPickerData: [String] = ["1", "2", "3", "4", "5"]
@IBOutlet var pickerfield: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
let spinnerCPicker = UIPickerView()
spinnerCPicker.delegate = self
pickerfield = spinnerCPicker
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView( _ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return spinneCPickerData.count
}
func pickerView( _ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return spinneCPickerData[row]
}
func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
pickerfield.text = spinneCPickerData[row] as String
view.endEditing(true)
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
// This method is triggered whenever the user makes a change to the picker selection.
// The parameter named row and component represents what was selected.
}
func setdata() {
guard let text data = PostCategoryField.text, !postcategory.isEmpty, else {
self.view.makeToast("Please Enter the Category!")
return
}
}
解决方案
您需要设置inputView
为您的pickerfield
.
像这样你可以做...
声明一个属性pickerView
private let pickerView = UIPickerView(frame: .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 216))
inviewDidLoad
方法设置委托和数据源。
pickerView.dataSource = self
pickerView.delegate = self
pickerfield.inputView = pickerView
因此,当pickerfield
成为第一响应者时,选择器视图将代替键盘显示。
所以用户必须从选择器视图中选择一个值
更新
您可以通过if-let
以下方式做到这一点。您需要将此代码放在要验证文本字段值的位置。
//When pickerfield.text value is one of the value of spinneCPickerData array
if let txt = pickerfield.text, spinneCPickerData.contains(txt) {
print("the textfield'd value is from the array")
}
推荐阅读
- docker - Redis 数据被清除
- html - 动画的问题
- typescript - 如何在 TypeScript 中检查类型参数的类型
- javascript - python Flask在上传到S3之前调整图像大小
- types - 不清楚类型错误;ide 知道类型,编译器不知道,在 F#
- java - 如何使用 Spinner 显示字符串日期列表
- java - 编译器无法识别类字符串值等于另一个字符串值
- spring - Spring从模块加载和使用bean
- javascript - Node使用FFMPEG处理录屏的帧数
- hadoop - 使用 sqoop import all 的 hive-import 和 hive-overwrite