iOS 一一 storyBoard中segue实现页面跳转

来源:互联网 发布:淘宝男装夏季 编辑:程序博客网 时间:2024/05/16 23:42

什么是Segue?

在storyBoard上每一根用来界面跳转的线,都是一个UIStoryBoardSegue对象.(简称Segue)



Segue的属性

每一个Segue对象,都有3个属性

给Segue设置唯一标识:

@property (nonatomic, readonly) NSString *identifier;



来源控制器

@property(nonatomic, readonly) id sourceViewController;

目标控制器

@property(nonatomic, readonly) id destinationViewController;



Segue的类型

根据Segue的执行(跳转)时刻,Segue可以分为2大类型.

  • 自动型: 点击某个控件后(某个按钮),自动执行Segue,自动完成界面的跳转
  • 手动型: 需要通过写代码手动执行Segue,才能完成界面的跳转
自动型Segue
按住control 键,直接从控件拖线到目标控制器
      

注意: 

点击'登录'按钮后,就会自动跳转到右边的控制器

如果点击某个控件后,不需要做任何判断,一定要跳转到下一个界面,建议使用自动型Segue


手动型Segue

按住Control键,从来源控制器拖线到目标控制器



手动型的Segue需要设置一个标识


  • 在该跳转的时候,使用performSegueWithIdentifier方法执行对应的Segue
[self performSegueWithIdentifier:@"login2contacts" sender:nil];// Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用
  • 如果点击某个控件后,需要做一些判断,满足一定的条件后,才跳转到下一界面,建议使用手动型Segue


performSegueWithIdentifier:sender: 方法的底层实现

手动型Segue可利用此方法来完成界面的跳转.

  • 1. 根据传入的identifier 会去storyBoard中找到有没有指定标识的Segue
  • 2. 根据指定的标识,创建一个UIStoryboardSegue对象,把当前的控制器设置为源控制器
  • segue.sourceViewController = self;
  • 3. 然后根据segue去查找目标控制器,给UIStoryboardSegue的目标控制器属性赋值
  • segue.destinationViewController.
  • 4. 然后调用当前控制器prepareForSegue: 方法,告诉用户,当前的segue已准备好.
  • 5. 在prapareForSegue:方法中默认会调用[segue perform]; 方法
[segue perform];方法的底层实现;
调用Segue对象的- (void)perform;方法开始执行界面跳转操作
 如果seguestylepush
取得sourceViewController所在的UINavigationController
调用UINavigationControllerpush方法将destinationViewController压入栈中,完成跳转

如果seguestylemodal
调用sourceViewControllerpresentViewController方法将destinationViewController展示出来

prepareForSegue:方法

当执行performSegueWithIdentifier方法后,会调用这个方法

此方法会在跳转到下一控制器之前调用.

注意:

这个方法通常用来做一些控制器之间的数据传递

  • 1. 需要接收数据的控制器要定义一个属性,用来接收其他控制器传来的数据
  • 2. 数据的来源控制器要拿到 需要接收数据的控制器
  • 3. 给需要接收数据的控制器的属性 赋值

控制器之间的数据传递

控制器之间的数据传递主要有两种情况:顺传和逆传

顺传:

控制器的跳转方法: A -> C

 数据的传递方向: A -> C

 数据的传递方式: 

A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController,也就是C控制器,

直接给C控制器传递数据

逆传:

控制器的跳转方法: A -> C

数据的传递方向: C -> A

数据的传递方式: 让A称为C的代理,在C中调用A的代理方法,通过代理方法的参数传递数据给A控制器


原创粉丝点击