1、用户数据在不同ViewController中的传递。比如:单击联系人列表中的cell,会跳到编辑页面或者保存编辑页面中的数据,将数据传给联系人页面。
2、如果将数据持久化(存数据,下次使用的时候还存在)
(1).只有当账号和密码输入框都有值的时候,登录按钮才能交互
(2).当取消勾选记住密码后,自动登录按钮也随之取消;当勾选了自动登录按钮时,记住密码按钮也一同勾选。
(3).点击登陆后,弹出蒙版,界面不可交互,程序能够简单判断账号和密码是否正确,如果不正确则给出相应的提示,如果正确则跳转到联系人列表界面
监听控件的话应该想到三种方法:addTarget监听点击事件、设置delegate监听常见事件、delegate还不行的话那就使用Notification
UITextField的delegate一般监听的是txt的编辑情况(键盘弹出前后)和文字改变是否可以改变(YES、NO指的是键盘是否可以输入,而不是文字改变)还有一个键盘上的return键。
UITextField会在文字改变的时候发出通知
(1).只有当账号和密码输入框都有值的时候,登录按钮才能交互
- (void)viewDidLoad
51 {
52 [super viewDidLoad];
53
54 //监听文本输入框的改变
55 //1.获得通知中心
56 NSNotificationCenter *center=[NSNotificationCenter defaultCenter];
57 //2.注册监听
58 //注意:一定要写上通知的发布者,否则如果该界面上有多个文本输入框的话,都会响应
59 //UITextFieldTextDidChangeNotification监听的事件:文本输入框的内容发生改变
60 //self.numberField:监听的对象
61 //textChange:当事件发生时调用的方法
62 [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.numberField];
63 [center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.pwdField];
64 }
65
66
67 //监听文本输入框的状态,当两个文本输入框中都有值的时候,让登录按钮的状态变为可交互的
68 -(void)textChange
69 {
70 // if (self.numberField.text.length>0&&self.pwdField.text.length>0) {
71 // self.loginBtn.enabled=YES;
72 // }else
73 // //这里主要针对数据回删
74 // self.loginBtn.enabled=NO;
75
76 //可以改写为下面的写法
77 self.loginBtn.enabled=(self.numberField.text.length>0&&self.pwdField.text.length>0);
78 }
(2).当取消勾选记住密码后,自动登录按钮也随之取消;当勾选了自动登录按钮时,记住密码按钮也一同勾选。
- (IBAction)rempwdChange:(id)sender {
81 //1.判断是否记住密码
82 //2.如果取消记住密码,则同时取消自动登录
83 if (self.rempwdSwitch.isOn==NO) {
84 // self.autoLoginSwitch.on=NO;
85 //设置动画效果
86 [self.autoLoginSwitch setOn:NO animated:YES];
87 }
88 }
89
90 - (IBAction)autoLoginChange:(id)sender {
91 //1.判断是否自动登录
92 //2.如果自动登录,就记住密码
93 if (self.autoLoginSwitch.isOn==YES) {
94 [self.rempwdSwitch setOn:YES animated:YES];
95 }
96 }
(3).点击登陆后,弹出蒙版,界面不可交互,程序能够简单判断账号和密码是否正确,如果不正确则给出相应的提示,如果正确则跳转到联系人列表界面。
- (IBAction)loginBtnOnclick:(id)sender {
98 //点击登录按钮,提示加载信息,并对账号和密码进行判断,如果正确就跳转到新的界面,如果不正确那就显示提示信息
99 //这里使用了第三方框架
100 //在点击登录按钮后,添加一层蒙版以禁止用户操作,并且提示用户正在登录
101 [MBProgressHUD showMessage:@"正在努力加载....."];
102 //让后面的操作在3秒钟之后再执行
103 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
104 if (![self.numberField.text isEqualToString:@"YY"]) {
105 //登录操作后,取出蒙版
106 [MBProgressHUD hideHUD];
107 //输入账号不正确,则提示错误信息
108 [MBProgressHUD showError:@"输入的账号不存在!"];
109 return;
110 }
111 if (![self.pwdField.text isEqualToString:@"123"]) {
112 //输入密码不正确,则提示错误信息
113 [MBProgressHUD hideHUD];
114 [MBProgressHUD showError:@"输入的密码不正确!"];
115 return;
116 }
117 //如果密码和账号都正确的话,跳转到新的界面
118 //移除蒙版
119 [MBProgressHUD hideHUD];
120 //跳转到新的界面,使用segue(需要判断-手动)
121 [self performSegueWithIdentifier:@"login2contatc" sender:@"文顶顶"];
122 });
123 }
124 //在segue跳转之前会调用这个方法,会传入performSegueWithIdentifier方法创建好的segue对象
125 -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
126 {
127 NSLog(@"%@",sender);
128 //数据的正向传递
129 //1.拿到目标控制器
130 UIViewController *vc=segue.destinationViewController;
131 //2.设置目标控制器的标题
132 vc.title=[NSString stringWithFormat:@"%@的联系人列表",self.numberField.text];
133
134 /*
135 // 执行segue的perform内部实现
136 UIViewController *sourceVc = segue.sourceViewController;
137 UINavigationController *nav = sourceVc.navigationController;
138 [nav pushViewController:segue.destinationViewController animated:YES];
139 */
}