ios - 如何确保在文本字段中仅选择选择器数据

标签 ios swift uitextfield uipicker

我在 UITextfield 中使用以下代码作为选择器函数,我应该如何确保选择数组中的值并且没有其他数据输入 我分享了下面的代码,我使用“guard”来检查字段是否为空 代码

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))

viewDidLoad方法中设置委托(delegate)和数据源。

    pickerView.dataSource = self
    pickerView.delegate = self
    pickerfield.inputView = pickerView

因此,当 pickerfield 成为第一响应者时,选择器 View 将代替键盘显示。

因此用户必须从选择器 View 中选择一个值

更新

您可以通过以下方式通过 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")
 }

关于ios - 如何确保在文本字段中仅选择选择器数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975060/

相关文章:

ios - 如果用户在返回键盘之前按下按钮,如何将按钮的操作应用于文本字段

iphone - 了解文本字段中的字符打印

ios - 在标签栏 Controller 中嵌入 'show' segues

ios - 如何获取流字节并转换回图像 - IOS

swift - Swift中传递参数的顺序

ios - 添加一个 SKLabelNode 到 Scene Kit View

ios - SDWebImage 加密图片

ios - 禁止使用 NSLog

swift - 相同的 Int 在 Swift 中有不同的值,神秘的谜语

swift - 使用 UITextField 字符串更改 UIView 颜色