Segue

Segue

Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)


Segue的属性

每一个Segue对象,都有3个属性唯一标识@property(nonatomic,readonly)NSString*identifier;来源控制器@property(nonatomic,readonly)idsourceViewController;目标控制器@property(nonatomic,readonly)iddestinationViewController;


Segue的类型

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

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

手动型:需要通过写代码手动执行Segue,才能完成界面跳转 在恰当的时刻,

使用perform方法执行对应的Segue[selfperformSegueWithIdentifier:@"login2contacts"sender:nil];

performSegueWithIdentifier底层实现: [selfperformSegueWithIdentifier:@"login2Contact"sender:nil];// 1.根据Identifier去storyboard中查找segue,并且创建segue对象// 2.设置segue来源控制器 segue.sourceVc = self// 3.创建目的控制器,并且设置segue的目的控制器// 4.通知来源控制器,准备好segue,prepareForSegue// 5.[segue perform]// 5.1 拿到导航控制器self.navigationController// 5.2 push  [self.navi

// Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用

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

如果点击某个控件后,需要做一些判断,也就是说:满足一定条件后才跳转到下一个界面,建议使用“手动型Segue”

控制器的数据传递

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

顺传

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

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

数据的传递方式:在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController, 也就是控制器C, 直接给控制器C传递数据(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)

顺传:来源控制器传递给目的控制器

1.在目的控制器定义属性

2.在来源控制器拿到目的控制器,给它传值

通过segue跳转,一般在来源控制器的prepareForSegue中传值.

逆传

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

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

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

你可能感兴趣的:(Segue)