我有一个自定义单元格:
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var TextField: UIText!
}
在我的ViewController
我用它作为
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CustomCellOne", forIndexPath: indexPath) as! CustomOneCell
cell.middleLabel.text = self.model.Fieldname
return cell
}
我的UITableView
中有大约15个单元格,其中一个是电子邮件。
现在为标签电子邮件的UITextField
。我需要进行电子邮件验证。那么我该如何对该领域进行验证呢?
任何想法将非常感激。对于我使用的电子邮件验证。
func isValidEmail(testStr:String) -> Bool {
print("validate emilId: \(testStr)")
let emailRegEx = "^(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?(?:(?:(?:[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+(?:\\.[-A-Za-z0-9!#$%&’*+/=?^_'{|}~]+)*)|(?:\"(?:(?:(?:(?: )*(?:(?:[!#-Z^-~]|\\[|\\])|(?:\\\\(?:\\t|[ -~]))))+(?: )*)|(?: )+)\"))(?:@)(?:(?:(?:[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)(?:\\.[A-Za-z0-9](?:[-A-Za-z0-9]{0,61}[A-Za-z0-9])?)*)|(?:\\[(?:(?:(?:(?:(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))\\.){3}(?:[0-9]|(?:[1-9][0-9])|(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5]))))|(?:(?:(?: )*[!-Z^-~])*(?: )*)|(?:[Vv][0-9A-Fa-f]+\\.[-A-Za-z0-9._~!$&'()*+,;=:]+))\\])))(?:(?:(?:(?: )*(?:(?:(?:\\t| )*\\r\\n)?(?:\\t| )+))+(?: )*)|(?: )+)?$"
let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
let result = emailTest.evaluateWithObject(testStr)
return result
}
我正在创建一个注册表单,表单的所有内容都是从API甚至字段名称
加载的答案 0 :(得分:0)
我说这里有两个问题。
在应用程序的生命周期中,我们应该进行验证吗?当用户结束对文本字段的编辑时,您可能希望这样做。因此,您需要为文本字段指定委托,以便在我们无效时检测textFieldShouldEndEditing(_:)
,验证并阻止结束编辑。
一旦你完成了这项工作,你怎么知道这是电子邮件文本字段?显然,电子邮件文本字段需要与其他字段不同。一个简单的解决方案是给电子邮件文本字段一个tag
值,您可以检查。所有其他文本字段可能具有tag
值0
,而此文本字段的值为tag
1
。
这些内容都将在cellForRowAt:
实现中配置(确切地说,当前代码的空行位置)。您知道哪一行是电子邮件行,因此必须专门处理其文本字段。但是,请务必覆盖每一行,因为如您所知,细胞会被重复使用。
答案 1 :(得分:0)
简易方式[快速5]
自定义表格视图单元格的第一个声明数组
//MARK:- DECLARATIONS
var DataSource = 5 //Five textField in TableCell
var arrayOfCell = [tableViewCell]()
TableView方法
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return DataSource
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "txtCell", for: indexPath) as! tableViewCell
arrayOfCell += [cell]
return cell
}
按钮(提交),当您要验证文本字段时
@IBAction func btnSubmit(_ sender: Any) {
for i in 0..<arrayOfCell.count{
if arrayOfCell[i].txtName.hasText != true{
let alert = UIAlertController(title: "Warning!", message: "Please enter the text No: \(i)", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Continue", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
}