segue生命周期
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生命周期的更多相关文章
- 创建控制器的方法、控制器加载view过程、控制器view的生命周期、多控制器组合
在介绍四大对象的那篇博客中,可以基本了解到程序启动的过程: main-->UIApplicationMain-->创建UIApplication的实例和app代理AppDelegate的实 ...
- UIView的生命周期总结
序言: loadView.viewDidLoad.viewDidAppear.initWithNibName.awakeFromNib等经常出现在UIViewController中的方法介绍. 这些方 ...
- UI3_UIViewController生命周期
// // SecondViewController.h // UI3_UIViewController生命周期 // // Created by zhangxueming on 15/7/2. // ...
- View和viewController的生命周期
View和viewController的生命周期 一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,View ...
- iOS view和viewController的生命周期
一.ViewController的职责 对内管理与之关联的View,对外跟其他ViewController通信和协调.对于与之关联的View,ViewController总是在需要的时候才加载视图,并 ...
- initWithFrame、initWithCoder、awakeFromNib的区别和调用次序 & UIViewController生命周期 查缺补漏
当我们创建或者自定义一个UI控件时,就很可能会调用awakeFromNib.initWithCoder .initWithFrame这些方法.三者的具体区别如下: initWithFrame: 通过代 ...
- iOS对UIViewController生命周期和属性方法的解析
目录[-] iOS对UIViewController生命周期和属性方法的解析 一.引言 二.UIViewController的生命周期 三.从storyBoard加载UIViewController实 ...
- iOS开发-ViewController的生命周期和切换
ViewController在App开发中是至关重要的一环,无论是页面的展示和数据之间的交互,ViewController提供了一个框架可以管理和构建App应用.iOS中构建App提供了两种方式一种是 ...
- 【iOS开发】iOS对UIViewController生命周期和属性方法的解析
iOS对UIViewController生命周期和属性方法的解析 一.引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...
随机推荐
- WebApp 中用 hashchange 做路由解析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Expanding Rods(二分)
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10287 Accepted: 2615 Description When ...
- bzoj3438
很容易想到是最小割模型首先对于一个点i,从s到i连一条容量为ai的边,再从i连一条容量为bi的边到t然后就是处理附加权的问题了一开始受到之前的思维定势的影响,一直在思考怎么在作物之间连边由于每种额外收 ...
- hdu-2586-How far away ?(离线LCA)
题意: 给定一棵树,每条边都有一定的权值,q次询问,每次询问某两点间的距离. 分析: 这样就可以用LCA来解,首先找到u, v 两点的lca,然后计算一下距离值就可以了. 这里的计算方法是,记下根结点 ...
- Chrome启动参数的配置问题的补充
一.当Chrome浏览器不支持本地AJAX请求时,会出现AJAX跨域问题,这时候我们就要配置相应的启动参数使得浏览器可以访问本地文件: 配置参数为:--allow-file-access-from-f ...
- OpenWrt简要刷机教程
准备工作 1. 下载openwrt中文固件到PC.(当然其他英文固件也可) 2 找到路由器的RST键. 3 找到路由器刷机口---姑且称之为“WAN口” 4. 关闭路由器的电源. 5. 将PC网口 ...
- poj 1458 Common Subsequence【LCS】
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 43132 Accepted: 17 ...
- 理解RESTful架构(转)
理解RESTful架构 作者: 阮一峰 http://www.ruanyifeng.com/blog/2011/09/restful 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这 ...
- JSP中的路径
我的原则 所有路径一律使用绝对路径,就是以"/"开头的或者带host的路径.形如: /imgs/1.jpg <%= request.getContextPath()%> ...
- TCP/UDP 、HTTP、IP 、socket 的关系。
网络有上下分为7 层.物理层,数据链路层.网络层.会话层.应用层.传输层: IP协议位于网络层,IP和端口来控制网络流向: TCP.UDP是基于传输层.TCP保证三次握手.传递数据: UDP为不考虑是 ...