swift4中的UITextfield验证 - 动态单元格

Posted

技术标签:

【中文标题】swift4中的UITextfield验证 - 动态单元格【英文标题】:UITextfield validation in swift4 - Dynamic cells 【发布时间】:2018-11-07 06:01:44 【问题描述】:

我有一个表格(带有问题和文本字段的表格视图)。 它不是静态的,因为数据可能会根据用户选择的表单而改变。 所以我将这些问题和验证约束存储在字典中。 如何在用户按下提交之前验证这些字段? 代码如下:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let Cell:FormTableViewCell = self.tableView.dequeueReusableCell(withIdentifier: "cellformid") as! FormTableViewCell
    let dict = questions?[indexPath.row]
        Cell.form_question_label.text = dict?.question_name
        Cell.form_answer_textfield.text = dict?.answer ?? ""
        return Cell
    

//Submit Button Action
   @IBAction func saveFormButtonPressed(_ sender: Any) 
   //Here I do operations to save a Array which contain all attended answers.


注意:当我按下提交按钮时,用户输入的数据正在保存到数据库中,但无法进行验证,因为如果某些问题无人看管,未存储在数据库中,也未附加到数组。所以我无法检查是否所有必填字段都已完成。

请提出一个方法..

【问题讨论】:

你想要逻辑来验证表单吗?我无法理解您要达到的目标。 @George 验证我的表单。请查看 Mateusz 提供的答案和我的评论。希望你能理解。如果我不清楚,对不起! 【参考方案1】:

您可以添加到您的UITextField:

textField.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)

然后验证答案:

@objc func textFieldDidChange(_ textField: UITextField) 
   //Validation

【讨论】:

这仅在文本字段被更改或编辑时有效。如果用户没有输入任何内容或根本没有调用 textFieldDidChange() 会发生什么? 如果UITextField 未被编辑或更改,您也可以直接通过textField.text 读取正确UITextField 的值【参考方案2】:

试试这个。

for view in self.view.subviews 
     if (view is UITextField) 
          var textfield = view as! UITextField
          if (textfield.text == "") 
                // execute code
          
     

【讨论】:

以上是关于swift4中的UITextfield验证 - 动态单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS swift 4中进行名字验证?

Swift 4 或 Swift 5 中的 UITextView 用户输入文本验证:限制 Swift 中的特定字符

为int总数添加一个字符串和一个int(Swift4)

Swift 4 - UITextfield 边框半径颜色问题

Swift 4:@IBOutlet UITextView 崩溃

UITableViewCell 中的 UITextField 和模态视图中的验证