segue生命周期:
概述:
理解segue工作原理,需要理解一个segue对象的生命周期。segue对象是UIStoryboardSegue的实例或者是它的一个子类。所有iOS app都不能直接创建segue对象。
segue对象通常是在跳转行为触发时被iOS系统创建。
1. 目标控制器已经创建且实例化;
2. segue对象被创建出来,并且segue的 initWithIdentifier:source:destination: 方法被调用。其中identifier是在Interface Builder设定的类型为字符串的唯一标识。
source代表来源控制器,destination代表目标控制器;
3. 来源控制器的 prepareForSegue:sender: 方法被调用;
4. segue对象的 perform方法被调用。这个方法会将目标控制器呈现在屏幕上;
5. segue对象被释放。

实现一个自定义segue:
为了实现一个自定义segue,需要创建一个继承自UIStoryboardSegue的对象,并实现2个方法,分别是:
initWithIdentifier:source:destination://注意:需要调用父类构造方法,然后初始化子类的成员变量。
perform//注:可加动画效果
提醒:自定义segue中可以通过添加一些自定义属性来配置segue,但这仅限于在代码里面,在Interface Builder中是不能的。取而代之的是在来源控制器的
prepareForSegue:sender:方法中进行自定义segue的配置。
示例:
-(void)perform{
//在此添加动画
[<#来源控制器#> presentModalViewController:<#目标控制器#> animated:NO];
}
segue触发时配置目标控制器:
segue触发时,iOS系统会执行下面的动作:
1. 实例化目标控制器
2. 实例化一个新的segue对象,该对象包含被触发的segue的所有信息。
3. 调用来源控制器的 prepareForSegue:sender: 方法,将新的segue对象和触发segue的对象(事件源,如按钮)传入该方法。
4. 调用segue的perform方法,呈现目标控制器到屏幕。实际执行的效果依赖于segue的类型。例如:模态segue(modal segue)告诉来源控制器将目标控制器呈现到屏幕。
5. 释放segue对象,segue生命周期结束。
来源控制器的 prepareForSegue:sender: 方法可以任意地进行配置目标控制器的属性,包括代理(如果目标控制器有代理属性)。
示例:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  if([[segue identifier] isEqualToString:@"showDetails"]){
    TJQDetailsViewController *dvc=[segue destinationViewController];
    dvc.xxxx=self.datas[index];//数据顺传
}
if([[segue identifier] isEqualToString:@"showAddView"]){
  TJQAddViewController *addVc=[segue destinationViewController];
  addVc.delegate=self;//设置代理可以回传数据
  }
}
这个示例处理在Storyboard设定的2个不同的segue,通过segue的identifier属性值的不同来区分segue。

segue生命周期的更多相关文章

  1. 创建控制器的方法、控制器加载view过程、控制器view的生命周期、多控制器组合

    在介绍四大对象的那篇博客中,可以基本了解到程序启动的过程: main-->UIApplicationMain-->创建UIApplication的实例和app代理AppDelegate的实 ...

  2. UIView的生命周期总结

    序言: loadView.viewDidLoad.viewDidAppear.initWithNibName.awakeFromNib等经常出现在UIViewController中的方法介绍. 这些方 ...

  3. UI3_UIViewController生命周期

    // // SecondViewController.h // UI3_UIViewController生命周期 // // Created by zhangxueming on 15/7/2. // ...

  4. View和viewController的生命周期

    View和viewController的生命周期 一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,View ...

  5. iOS view和viewController的生命周期

    一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,ViewController总是在需要的时候才加载视图,并 ...

  6. initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏

    当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代 ...

  7. iOS对UIViewController生命周期和属性方法的解析

    目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实 ...

  8. iOS开发-ViewController的生命周期和切换

    ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用.iOS中构建App提供了两种方式一种是 ...

  9. 【iOS开发】iOS对UIViewController生命周期和属性方法的解析

    iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...

随机推荐

  1. jQuery折叠风琴

    这个效果用jQuery做是很方便的,根本不需要搞得很复杂. 网上有些效果DEMO不仅用了jQuery还引用一两个封装文件,真是匪夷所思. 最初想到了toggle: jQuery(document).r ...

  2. cortex m0 lpc1114的NVIC中断如何使用

    LPC1114单片机的NVIC中断函数,有开中断.关中断.设置优先级.挂起等操作函数.这些函数位于core_cm0.h文件里面.比如开中断的函数如下: /** \brief Enable Extern ...

  3. bzoj1076

    好像题目有点问题?且现在决定不吃的宝物以后也不能再吃好像下次还是可以吃的,就是这样然后明显是状压dp,注意这道题明显倒推更容易因为顺推很可能从一个无效状态推到有效状态 ..,..] of double ...

  4. 【Animations】

    这个比较高端了!CSS3动画帧数科学计算法 基于css的3d和动画 基于css的3d和动画(2) 如何使用JavaScript控制CSS Animations(动画)和Transitions(过渡) ...

  5. Android FileUtil(android文件工具类)

    android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...

  6. 图论(Tarjan缩点):BZOJ 1194: [HNOI2006]潘多拉的盒子

    1194: [HNOI2006]潘多拉的盒子 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 344  Solved: 181[Submit][Stat ...

  7. SRM 405(1-250pt, 1-500pt)

    DIV1 250pt 题意:以linux系统中文件系统的路径表示方法为背景,告诉你某文件的绝对路径和当前位置,求相对路径.具体看样例. 解法:模拟题,不多说.每次碰到STL的题自己的代码都会显得很sb ...

  8. u盘启动openwrt

    opkg update opkg install kmod-usb-ohci kmod-usb2 kmod-fs-ext3 opkg install kmod-usb-storage reboot m ...

  9. Hibernate一 入门

    一 简介1.什么是ORMObject/Relation Mapping,即对象/关系映射.可以将其理解为一种规范,具体的ORM框架可以作为应用程序和数据库的桥梁.面向对象程序设计语言与关系数据库发展不 ...

  10. css倒三角的几种实现方式

    在网页中,你在很多地方都能看到倒三角,比如tooltips,下拉菜单等.大家有几种方式来实现呢? 1.BASE64编码 图片 假如你已经有了三角形的图片,并且减少HTTP请求,那么将这个图片转换成一个 ...