一:在登录时弹出提示用户的提示框:
1.使用第三方框架。
2.在登陆按钮点击事件中增加如下代码:
- (IBAction)loginBtnClicked {
NSString *acount = self.acountField.text;
NSString *password = self.passwordField.text;
// 跳出正在登陆的提示框
[MBProgressHUD showMessage:@"正在登陆"];
// 模拟加载中 QAQ 感觉好喜感啊
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// 隐藏正在登陆的提示框
[MBProgressHUD hideHUD];
// 判断用户账目密码是否输入正确,跳出提示并跳转界面
if ([acount isEqualToString:@"zhangsan"]&&[password isEqualToString:@"123"]) {
[self performSegueWithIdentifier:@"ContactsViewController" sender:nil];
[MBProgressHUD showSuccess:@"登陆成功"];
}else{
[MBProgressHUD showError:@"账号密码错误"];
}
}
);
}
3.在- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法中给目标控制器专递参数
代码如下
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
#warning 先获得Segue的目标控制器,但是设置的是新的一个contactVc,为什么Segue目标控制器的属性也会改变?
id destcontroller = segue.destinationViewController;
if ([destcontroller isKindOfClass:[contactTableViewController class]]) {
contactTableViewController *contactVc = destcontroller;
contactVc.name = self.acountField.text;
}
}
这段代码有个不明白的地方,自己打了#waring,暂时想不通,以后来解决吧~
4.实际效果如下:
二:监听文本登陆框
1.使用通知中心,代码如下:
- (void)viewDidLoad {
[super viewDidLoad];
self.loginBtn.enabled = NO;
// 通知中心监听文本改变的情况,
// 建立通知中心,设置观察者订阅通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.acountField];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.passwordField]; }
//实现接受到文本改变的通知后 controller要做的事情
- (void)textChange
{
// 只有在账户和密码在文本登陆框中都有长度时,登陆按钮才可用
self.loginBtn.enabled = (self.acountField.text.length >= 5 && self.passwordField.text.length >= 3);
}
实际效果:
2.也可以直接给textField添加事件,代码如下:
[self.acountField addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged ];
[self.passwordField addTarget:self action:@selector(textChange) forControlEvents:UIControlEventEditingChanged ];
也可以直接在mainstroyboard中连线: