UIStoryboardSegue创建的segue对象使用

#import "MBProgressHUD+XMG.h"

- (IBAction)loginBtnClick:(id)sender {

    //用户名与密码同时正确时跳转到下一个界面
    [MBProgressHUD showMessage:@"正在登录..." toView:self.view];
    if ([self.accountTextF.text isEqualToString:@"xmg"] && [self.pwdTextF.text isEqualToString:@"123"]) {
        [MBProgressHUD hideHUDForView:self.view];
        //跳转到下一个界面
        [self performSegueWithIdentifier:@"contactVC" sender:nil];

    }else {
         [MBProgressHUD hideHUDForView:self.view];
        //提醒用户
        [MBProgressHUD showError:@"用户名与密码错"];
    }



    //performSegueWithIdentifier底层实现
    //1.根据标识到storyBaord查看有没有指定标识的segue
    //2.根据标识创建segue对象(UIStoryboardSegue)
    //3.设置segue对象的源控制器.创建目标控制器,并且给segue的目标控制器属性设置值.
    //4.会自动调用prepareForSegue方法,告诉segue准备完毕.
    //5.[segue perform]; [self.navigationController pushViewController:segue.destinationViewController animated:YES];

}

// 如果是自动的话,密码不对也会跳转
// 如果不是自动的话,手动的话,只有密码正确才会跳转,通过控制器拖的线
// 就是手动管理,控件直接托线到下一个控制器,那是自动管理

//数据传值(顺传)
//1.在数据要接收目标控制器当中定义要接收数据的属性
//2.拿到目标控制器
//3.给目标控制器的对应属性传值
// 该方法,可以通过performSegueWithIdentifier调用来到这,这种方式为手动,也可以通过
// 自动,自动就是在storyboard里面从一个控制器托线到另一个控制器,也会调用该方法,所以
// 想处理一些逻辑业务可以在该方法中做一些事情
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    NSLog(@"%@",segue.sourceViewController);
    NSLog(@"%@",segue.destinationViewController);
   XMGContactVC_2 *contact =  (XMGContactVC_2 *)segue.destinationViewController;
    contact.accountName = self.accountTextF.text;

    // 如果在prepareForSegue会报错,为什么,因为performSegueWithIdentifier该方法会自动调用[segue perform]方法,它调用了,你自己又去调用,重复调用了,所以报错,所以不要去调用该方法
    // [segue perform];
}

  • performSegueWithIdentifier底层实现
    • 1.根据标识到storyBaord查看有没有指定标识的segue (笔者形象认为是摆渡者的号码)
    • 2.根据标识创建segue对象(UIStoryboardSegue--bai)
    • 3.设置segue对象的源控制器.创建目标控制器,并且给segue的目标控制器属性设置值.
    • 4.会自动调用prepareForSegue方法,告诉segue准备完毕.
    • 5.[segue perform]; [self.navigationController pushViewController:segue.destinationViewController animated:YES];

你可能感兴趣的:(UIStoryboardSegue创建的segue对象使用)