storyboard中定义切换关系

在storyboard中可以添加多个控制器,并且使用连线连接多个控制器之间的切换关系。


Segue:

在storyboard中的控制器之间的连线,用来实现页面的跳转切换


两种Segue:自动型、手动型,都是UIStoryboardSegue类型


属性:

@property(nonatomic,readonly)NSString*identifier//在源控制器中所有segue中的唯一标识@property(nonatomic,readonly)idsourceViewController//源控制器@property(nonatomic,readonly)iddestinationViewController//目的控制器

自动型Segue的使用

点击某个控件后(如按钮),自动执行Segue,完成界面的跳转。

在storyboard中按住Control,直接从控件拖线到目的控制器:

segue类型选择presentation


手动型Segue的使用

1)按住control,从源控制器拖线到目标控制器。

2)手动型Segue需要指定一个标识

3)通过代码执行Segue,即执行跳转动作

UIViewController的执行Segue的方法:(源控制器调用)

-(void)performSegueWithIdentifier:(NSString*)identifiersender:(id)sender

identifier参数:Segue的ID

sender参数:任意对象,可传nil

值的传递

正向传递:

由于在跳转前不能获取segue对象的源控制,所以值的传递不能在performSegueWithIdentifier:前

跳转前,源控制器会自动调用prepareForSegue:方法,重写该方法实现值的传递

-(void)prepareForSegue:(UIStoryboardSegue*)seguesender:(id)sender

通过segue参数的identifier属性能够判断是哪个segue在执行

通过segue参数的destinationViewController属性能够获得目的控制器

仍然通过目的控制器添加属性,进行数据的传递,

如:

-(void)prepareForSegue:(UIStoryboardSegue*)seguesender:(id)sender{if([segue.identifierisEqualToString:@"pageOne2PageTwo"]){AMViewControllerTwo*vc=segue.destinationViewController;vc.str=@"这是源控制器AMViewControllerOne给你的数据";}}


逆向传递:

仍然使用代理设计模式,与代码切换的逆向传值方式相同