sugue生命周期,prepareforsegue
来源:互联网 发布:百度百科优化 编辑:程序博客网 时间:2024/05/02 16:18
segue生命周期
概述:
理解segue工作原理,需要理解一个segue对象的生命周期。segue对象是UIStoryboardSegue的实例或者是它的一个子类。所有iOS app都不能直接创建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,需要创建一个继承自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: 方法可以任意地进行配置目标控制器的属性,包括代理(如果目标控制器有代理属性)。
示例:
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.
0 0
- sugue生命周期,prepareforsegue
- prepareForSegue
- prepareForSegue传值
- storyboard之 prepareForSegue:sender:
- Storyboard 传值 prepareForSegue
- prepareForSegue 传递数据
- storyboard之 prepareForSegue:sender:
- storyboard之 prepareForSegue:sender:
- storyboard之 prepareForSegue:sender:
- iOS--Storyboard 传值 prepareForSegue
- storyboard之 prepareForSegue:sender:
- prepareForSegue在什么时候会调用
- prepareForSegue方法传入对象的问题
- iOS-prepareForSegue场景切换,KVC传值
- IOS prepareForSegue 多窗口切换学习
- StoryBoard 关于Segue ----prepareForSegue:sender: 理解
- iOS学习之——prepareForSegue:sender:
- 两个页面之间传参数(包括单例模式,sugue,tableView,代理模式)
- Mysql索引原理
- 蓝桥杯 历届试题 放棋子
- 广播在服务中接收能耗时操作吗
- HDOJ 1091 A+B for Input-Output Practice (III)
- Android Studio 更新SDK 腾讯镜像使用方法
- sugue生命周期,prepareforsegue
- HDU 5101 Select(vector)
- Openfire实现QQ群功能
- PCA降维
- 【Matlab】函数imread的返回值
- NOIP2012提高组 开车旅行 解题报告
- 提高Web页面性能的技巧
- POJ3278Catch That Cow(bfs)
- java 多线程( Future Callable)