在登陆界面,点击登陆,验证账号密码,之后跳转到下一个窗口。用户的数据从第一个控制器传递到下一个控制器。实现方法如下:
/**点击登陆按钮*/
- (IBAction)login { //账号:qqq 密码:www
if(![self.accountField.text isEqualToString:@"qqq"]){
[MBProgressHUD showError:@"用户名不存在.."]; //MBProgressHUD为之前博客中常用第三方
return; //类库中很棒的加载特效(透明指示层HUD)的框架
} //地址:https://github.com/jdg/MBProgressHUD
if(![self.pwdField.text isEqualToString:@"www"]){
[MBProgressHUD showError:@"密码不存在.."];
return;
}
//添加加载遮盖
[MBProgressHUD showMessage:@"正在加载中..."];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
//加载成功后隐藏遮盖(载入页面)
[MBProgressHUD hideHUD];
//实现跳转
[self performSegueWithIdentifier:@"login2Contact" sender:nil];
});
}
/**
*执行segue后,跳转之前会调用这个方法
*一般在这里给下个控制器传递数据
*/
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
//1、取得目标控制器(联系人列表控制器)
UIViewController *contactVc = segue.destinationViewController;
//2、设置标题
contactVc.navigationItem.title = [NSString stringWithFormat:@"%@的联系人列表",self.accountField.text];
}
performSegueWithIdentifier:sender:
利用performSegueWithIdentifier:方法可以执行某个Segue,完成界面跳转
接下来研究performSegueWithIdentifier:sender:方法的完整执行过程
/******************************************************/
[self performSegueWithIdentifier:@“login2contacts” sender:nil];
// 这个self是来源控制器
/******************************************************/
1、根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象
设置Segue对象的sourceViewController(来源控制器)
新建并且设置Segue对象的destinationViewController(目标控制器)
2、调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象
/******************************************************/
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;
// 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
/******************************************************/
3、调用Segue对象的- (void)perform;方法开始执行界面跳转操作
取得sourceViewController所在的UINavigationController
调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转