本文将演示如何快速实现表单是输入验证。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios,‘12.0‘2 use_frameworks!3 4 target ‘DemoApp‘ do5 source ‘https://github.com/CocoaPods/Specs.git‘6 pod ‘SwiftValIDator‘,:git => ‘https://github.com/jpotts18/SwiftValIDator.git‘,:branch => ‘master‘7 end
根据配置文件中的相关配置,安装第三方库。
然后点击打开【DemoApp.xcworkspace】项目文件。
在项目导航区,打开故事版文件【Main.storyboard】
打开控件库,插入一个标签控件。点击【属性检查器】,进入属性设置面板。
设置标签默认文字的内容。拖动标签控件,增加标签控件的宽度。
再次插入一个标签到故事板中,设置文字内容右对齐,
该标签将用来显示表单验证时的错误信息。
往故事板中插入一个输入框,设置文本框的占位文字。
继续添加其他的控件,直到完成整个表单的制作。
再给表单添加一个提交按钮,设置按钮控件的标题文字:【submit】
背景色:【Background】
前景色:【Tint】
在项目导航区,打开视图控制器的代码文件【VIEwController.swift】
现在开始编写代码,实现表单的输入验证功能。
1 import UIKit 2 //在当前的类文件中引入已经安装的第三方类库 3 import SwiftValIDator 4 5 //使视图控制器类遵循表单验证协议。 6 class VIEwController: UIVIEwController,ValIDationDelegate { 7 8 //创建五个文本框属性, 9 //这五个文本框属性,将和故事板的五个文本框控件进行连接。 10 @IBOutlet weak var fullnameTextFIEld: UITextFIEld! 11 @IBOutlet weak var emailTextFIEld: UITextFIEld! 12 @IBOutlet weak var phoneNumberTextFIEld: UITextFIEld! 13 @IBOutlet weak var zipcodeTextFIEld: UITextFIEld! 14 @IBOutlet weak var emailConfirmTextFIEld: UITextFIEld! 15 16 //创建五个标签属性, 17 //这五个标签属性,将和故事板的五个标签控件进行连接。 18 //用来显示表单验证的错误信息。 19 @IBOutlet weak var fullnameErrorLabel: UILabel! 20 @IBOutlet weak var emailErrorLabel: UILabel! 21 @IBOutlet weak var phoneNumberErrorLabel: UILabel! 22 @IBOutlet weak var zipcodeErrorLabel: UILabel! 23 @IBOutlet weak var emailConfirmErrorLabel: UILabel! 24 25 //初始化一个表单验证器对象 26 let valIDator = ValIDator() 27 28 overrIDe func vIEwDIDLoad() { 29 super.vIEwDIDLoad() 30 31 //给视图添加一个触摸手势,用来关闭由于文本框控件处于焦点时,所d出的键盘。 32 self.vIEw.addGestureRecognizer(UITapGestureRecognizer(target: self, 33 action: #selector(VIEwController.hIDeKeyboard))) 34 35 //设置验证器的外观样式 36 valIDator.styletransformers( 37 //设置当验证成功时的样式 38 success:{ (valIDationRule) -> VoID in 39 //设置错误提示标签处于隐藏状态 40 valIDationRule.errorLabel?.isHIDden = true 41 //设置错误提示标签的内容为空的字符串 42 valIDationRule.errorLabel?.text = "" 43 //对文本框进行一些外观的设置 44 if let textFIEld = valIDationRule.fIEld as? UITextFIEld 45 { 46 //设置文本框的层的边框颜色为绿色 47 textFIEld.layer.bordercolor = UIcolor.green.cgcolor 48 //设置文本框的边框的宽度为1 49 textFIEld.layer.borderWIDth = 1.0 50 } 51 }, 52 53 //接着设置当验证失败时的样式 54 error:{(valIDationError) -> VoID in 55 //设置错误提示标签处于显示状态 56 valIDationError.errorLabel?.isHIDden = false 57 //设置错误提示标签的内容为错误的提示消息 58 valIDationError.errorLabel?.text = valIDationError.errorMessage 59 //对文本框进行一些外观的设置 60 if let textFIEld = valIDationError.fIEld as? UITextFIEld 61 { 62 //设置文本框的层的边框颜色为红色 63 textFIEld.layer.bordercolor = UIcolor.red.cgcolor 64 //设置文本框的边框的宽度为1 65 textFIEld.layer.borderWIDth = 1.0 66 } 67 }) 68 69 //给验证器对象,注册需要进行验证的文本框,以验证失败时的错误标签 70 //同时还设置了两个验证时的规则,即进行非空验证和全名验证 71 valIDator.registerFIEld(fullnameTextFIEld, 72 errorLabel: fullnameErrorLabel, 73 rules: [requiredRule(), 74 FullnameRule()]) 75 76 //进行非空验证和邮箱格式验证 77 valIDator.registerFIEld(emailTextFIEld, 78 errorLabel: emailErrorLabel, 79 rules: [requiredRule(), 80 EmailRule()]) 81 82 //增加了一个匹配验证的规则,以保证两个邮箱文本框,具有相同的内容。 83 valIDator.registerFIEld(emailConfirmTextFIEld, 84 errorLabel: emailConfirmErrorLabel, 85 rules: [requiredRule(), 86 ConfirmationRule(confirmFIEld: emailTextFIEld)]) 87 88 //增加了一个最小长度的验证,以验证是否输入了9个以上的字符 89 valIDator.registerFIEld(phoneNumberTextFIEld, 90 errorLabel: phoneNumberErrorLabel, 91 rules: [requiredRule(), 92 MinLengthRule(length: 9)]) 93 //增加了一个邮政编码格式的验证条件 94 valIDator.registerFIEld(zipcodeTextFIEld, 95 errorLabel: zipcodeErrorLabel, 96 rules: [requiredRule(), 97 ZipCodeRule()]) 98 } 99 100 //添加一个方法,用来响应提交按钮的点击事件。101 //该方法将为故事板中的提交按钮进行连接102 @IBAction func submitTapped(_ sender: AnyObject)103 {104 //在控制台输出日志105 print("ValIDating...")106 //并调用验证器进行表单的验证 *** 作。107 valIDator.valIDate(self)108 }109 110 //添加一个方法,当验证成功时调用该方法。111 func valIDationSuccessful()112 {113 //在控制台输出验证成功的语句114 print("ValIDation Success!")115 //创建一个警告窗口,显示验证成功的信息。116 let alert = UIAlertController(Title: "Success",117 message: "You are valIDated!",118 preferredStyle: UIAlertControllerStyle.alert)119 //给警告窗口添加一个按钮,用于关闭警告窗口。120 let defaultAction = UIAlertAction(Title: "OK",style: .default,handler: nil)121 alert.addAction(defaultAction)122 //在当前的视图控制器中,以模态的方式打开警告窗口。123 self.present(alert,animated: true,completion: nil)124 }125 126 //添加一个方法,当验证失败时调用该方法。127 func valIDationFailed(_ errors:[(ValIDatable,ValIDationError)])128 {129 print("ValIDation Failed!")130 }131 132 //添加一个方法,当用户点击根视图时,隐藏d出的键盘133 func hIDeKeyboard()134 {135 self.vIEw.endEditing(true)136 }137 }
在项目导航区,打开故事版文件【Main.storyboard】
点击【显示辅助编辑器】按钮,显示辅助编辑器。
在代码编辑区名称属性左侧的连接提示图标上点击,并拖动到所需要连接到的控件。
@H_404_0@ 总结以上是内存溢出为你收集整理的[Swift通天遁地]二、表格表单-(8)快速实现表单的输入验证全部内容,希望文章能够帮你解决[Swift通天遁地]二、表格表单-(8)快速实现表单的输入验证所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)