Ios UITable查看电子邮件的单元格验证
我想验证UItable view单元格上的emailId。为此,我做了以下工作:Ios UITable查看电子邮件的单元格验证,ios,swift,Ios,Swift,我想验证UItable view单元格上的emailId。为此,我做了以下工作: let cell = (tableView.dequeueReusableCellWithIdentifier("QuestionWithEmailField", forIndexPath: indexPath) as? QuestionWithEmailField)! cell.model = model cell.indexPath = indexPath
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
fromUITextFieldDelegate
来触发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中执行这些操作。