Segue

作者: iOS_Cqlee | 来源:发表于2015-10-04 00:38 被阅读246次

    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的代理方法,通过代理方法的参数传递数据给

    相关文章

      网友评论

      • feng_dev:写得精简实用 我喜欢
      • feng_dev:手动segue 和故事板里面 的 代码 跳转 就是 什么 UIstory board storrboard name ... 那个 方法 跳转 有什么区别

      本文标题:Segue

      本文链接:https://www.haomeiwen.com/subject/oqugcttx.html