Ios UITable查看电子邮件的单元格验证

Ios UITable查看电子邮件的单元格验证,ios,swift,Ios,Swift,我想验证UItable view单元格上的emailId。为此,我做了以下工作: let cell = (tableView.dequeueReusableCellWithIdentifier("QuestionWithEmailField", forIndexPath: indexPath) as? QuestionWithEmailField)! cell.model = model cell.indexPath = indexPath

我想验证UItable view单元格上的emailId。为此,我做了以下工作:

   let cell = (tableView.dequeueReusableCellWithIdentifier("QuestionWithEmailField", forIndexPath: indexPath) as? QuestionWithEmailField)!

            cell.model = model
            cell.indexPath = indexPath
            cell.TexitFieldEmail.delegate = self
            cell.lblEmail.text = model.labelText
            return cell
此手机用于发送电子邮件,还有其他手机用于发送电话号码和邮政编码。不同类型的字段有不同的单元格。现在,我如何验证电子邮件并使用DidEndEditingTextField

在我关于emailfield.swift的问题中,我已经做到了:

 @IBOutlet weak var lblEmail: UILabel!

@IBOutlet weak var TexitFieldEmail: UITextField!

  override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
//email validations functions
func isValidEmail(testStr:String) -> Bool
{
    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
    let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)
    let result = range != nil ? true : false
    return result
}

@IBAction func DidEndEditingTextField(sender: AnyObject) {

    let validEmailAddress = isValidEmail(TexitFieldEmail.text!)
    if validEmailAddress
    {
     print("Valid Email Address")
    }
    else{
        print("InvalidAddrss")
    }

}

但我无法验证此UITextField的电子邮件。现在,我想在按下“发送”按钮后验证该字段。如何执行此操作?..

您只需在包含该文本字段的
TableviewCell
中进行验证

您可能会注意到,当您按键盘上的
return
时,将不会调用
didEndEditing
。因此,您必须使用
textFieldShouldReturn
from
UITextFieldDelegate
来触发
didEndEditing

extension String {
    var isEmail: Bool {
        do {
           let regex = try NSRegularExpression(pattern:"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}", options: .caseInsensitive)
           return regex.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count)) != nil
        }
       catch {
          return false
       }
    }
}


class TextFieldTableViewCell: UITableViewCell, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        textField.delegate = self
    }

    @IBAction func didEndEditing(_ sender: UITextField) {
        if sender.text!.isEmail {
            print("YES")
        } else {
            print("NO")
        }
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.endEditing(true)
        return false
    }

}

1) 您能解释一下为什么“无法验证此UITextField的电子邮件”吗?。2) 如果要在按下“发送”按钮后进行验证,则需要将
emailTextField
作为属性进行维护,并验证该textField的文本。在
cellforrowatinexpath
中实现如下维护:
if(cellContainEmailField)\u emailTextField=cell.emailTextField
按下按钮?哪里您没有两套代码。它们写在哪个类下?好的,那么我如何验证这个。。按下按钮..???@nynohu,emailTextField在Xib文件中,我如何从加载的视图控制器验证它?您是否将“QuestionWithEmailField”设置为故事板上的单元格类?我在故事板中而不是在Xib btw中执行这些操作。