UIKit框架(9)控制器的modal切换方式(二)
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给你的数据";}}
逆向传递:
仍然使用代理设计模式,与代码切换的逆向传值方式相同
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。