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一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有 ...
随机推荐
- QVariant(相当于是Java里面的Object,起到一个数据类型“擦除”的作用,可以使用Q_DECLARE_METATYPE进行注册)
=QVariant= [%这个类型相当于是Java里面的Object,它把绝大多数Qt提供的数据类型都封装起来,起到一个数据类型“擦除”的作用.比如我们的 table单元格可以是string,也可以是 ...
- netstat详解
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Membershi ...
- MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途
本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA:提供了访问数据库元数据的方式 ...
- Course Schedule ——LeetCode
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...
- 高效算法——Bin Packing F - 贪心
Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Descripti ...
- Template 使用注意问题和范例
1. 基本定义 模板是 2. 分类 2.1 函数模板 (1) 作用: 函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计. (2)申明方法: template ...
- Git全解析之用起来先
文章目录 1. Git全解析之用起来先 1.1. 先安装Git环境 1.2. 配置 1.3. 简单了解Git 1.3.1. Git对象模型 SHA 1.3.2. Git目录与工作目录 1.4. 可以开 ...
- XML相关概念
XML:可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. XSL:XSL = XML 样式表.XSL 之于XML,就像CSS之于HTML.它是指可扩展样式语言 ...
- sqlserver授予用户查看执行计划的权限
sqlserver查看语句的执行计划是非常重要的,可以提高开发人员代码的质量.所以有必要授予开发人员对数据库查看执行计划的权限. 查看执行计划的权限属于数据库一级别的权限,具体例子如下 use ...
- pycharm-4.5.3 汉化教程(附汉化包)
汉化包地址 http://pan.baidu.com/s/1coLZau 密码: muu5 1.先找到Pycharm文件夹中的lib文件夹,将resources_en.jar复制到桌面并改名为res ...