在iOS开发中,segue用来实现storyboard中源视图控制器和目标视图控制器连接,当segue被触发时,系统将完成下列操作:
1、实例化目标视图控制器
2、实例化一个新segue对象,该对象持有所有的信息
3、调用源视图控制器的prepareForSegue:sender:方法,
4、调用segue的 perform 方法将目标控制器带到屏幕上。这个动作行为依赖segue的类型如modal,push,custom.modal segue告诉源视图控制器present目标视图控制器。
在源视图控制器的prepareForSegue:sender:的方法中,执行任何必要的目标视图控制器的属性配置,包括委托设置(如目标视图控制器有协议)。
(miki西游 @mikixiyou 原文链接: http://mikixiyou.iteye.com/blog/1745995
)
在apple的文档库中第二个示例应用开发文档中,介绍了这样一个segue的使用例子。
在源视图控制器实现代码中,实现prepareForSegue:sender:方法
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"ShowSightingsDetails"])
{
DetailViewController *detailViewController = [segue destinationViewController];
detailViewController.sighting = [self.dataController objectInListAtIndex:[self.tableView indexPathForSelectedRow].row];
}
if ([[segue identifier] isEqualToString:@"ShowAddSightingView"])
{
AddSightingViewController *addSightingViewController = [[[segue destinationViewController] viewControllers] objectAtIndex:0];
addSightingViewController.delegate = self;
}
}
这个实现方法代码是用来处理在storyboard中配置的从主视图控制器到不同的两个视图控制器的segue。这两个segue通过它们的identifier属性进行判断。
在identifier为"ShowSightingsDetails"的segue中,目标视图控制器是一个展示明细信息的视图控制器,使用的segue类型为push。这种通常用于navigator视图控制器中。
当用户选择表视图中的一行时,segue发生。传输数据到目标视图控制器,使目标控制器上能显示sighting。
在identifier为"ShowAddSightingView"的segue中,目标视图控制器管理的是一个增加新的sighting信息的视图,我们称之为add视图控制器。它是不需要从主视图控制器(源)传什么数据过来的。但是,主视图控制器需要获取在add视图控制器(目标)上输入的数据。
实现方式是采用delegate,将主视图控制器设置为add视图控制器(目标)的委托。在目标视图控制器上执行它的委托中方法,该方法需要先在主视图控制器的实现代码中实现,方法包括如何读取add视图控制器的数据,并dismiss掉add视图控制器。
在add视图控制器上,有两个按钮,用于执行cancel和done操作。这两个按钮操作的方法在主视图控制器中实现。
- (void)addSightingViewControllerDidCancel:(AddSightingViewController *)controller
{
[self dismissViewControllerAnimated:YES completion:NULL];
}
- (void)addSightingViewControllerDidFinish:(AddSightingViewController *)controller name:(NSString *)name location:(NSString *)location {
if ([name length] || [location length]) {
[self.dataController addBirdSightingWithName:name location:location];
[[self tableView] reloadData];
}
[self dismissModalViewControllerAnimated:YES];
}
在add视图控制器实现代码中,调用它的委托中这两个方法。
在storyboard中segue有三种类型,分别为modal segue、push segue、custom segue。
modal segue
是一个视图控制器(源)为了完成一个任务而模态地(modally)呈现另一个视图控制器(目标)。这个目标视图控制器不是导航视图控制器(navigation view controller)的栈中的一部分。
在任务完成后,使用delegate将呈现的视图控制器(目标)释放掉,应用界面切换到原来的视图控制器(源)上。
这个过程的实现代码可以看成是present和dismiss两个操作。
push segue
是将另一个视图控制器压入到导航控制器的栈中。它通常和导航视图控制器(navigation view controller)一起使用。
新压入的视图控制器会有一个回退按钮,可以退回来上一层。
这个过程的实现代码可以看成是push和pop两个操作。
分享到:
相关推荐
ios 使用 故事板模式下的 segue 进行导航
storyboard的unwind segue用法小结,博客文章:http://blog.csdn.net/kid_devil/article/details/23218195
使用storyboard 的segue 从后向前进行传值
ios segue 实验源码
Segue是一个专为电子学习而设计的开源协作内容管理系统,它结合了课程管理系统的易用性和灵活的Web日志,可创建各种类型的网站,包括课程,新闻和期刊。
传值方式中另外一种 在使用storybard的时候这种传值方式简单快捷,适用于基本的传值,一般用于从下往上传值,可以调到任何一个你想要的试图控制器里。
使用 segue 进行控制器间的数据传输-示例
1.2.5思考时间 1.3软件性能测试方法论 1.3.1SEI负载测试计划过程 1.3.2RBI方法 1.3.3性能下降曲线分析法 1.3.4LoadRunner的性能测试过程 1.3.5Segue提供的性能测试过程 1.3.6本书提供的PTGM模型 1.4本章小结 ...
我们介绍了2011年至2013年之间使用MAGIC望远镜对卫星星系Segue 1进行的立体观测结果。凭借近160个小时的高质量数据,这是迄今为止对所有矮星系进行的最深入的观测活动。 电磁频谱的能量范围很高。 我们在这个大数据...
嵌入式Segue和UITableViewController的Demo,有助于对嵌入式Segue的理解
Segue.js 入队函数,并按顺序调用它们。 特征 将要串行调用的异步函数入队 暂停或恢复队列中函数的调用 可选择无限期地重复整个函数调用序列 越小越好; 0.67 KB,或 0.41 KB 缩小和 gzip 错误处理 快速开始 您...
UIViewController上的一个类别,它自动将您的-prepareForSegue:sender:调用路由到基于 segue 标识符的显式方法。 所以,而不是这个: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { ...
用法呈现带转场使用带有 segue 的 CCMPopup 的第一步就像单击和拖动一样简单: 第二步是在源控制器中导入 CCMPopupSegue: #import <CCMPopup> 然后你必须实现源控制器的prepareForSegue:sender:方法,并将 segue ...
用法segue-container-component可以在您的 ember 组件之间设置动画。 例子: {{ segue-container component-name = componentName segue-for = segueFor blogPost — pinned-to-blog-post-pane = blogPost ...
DelegateExample:委托和Segue的使用
这个项目演示了如何使用 segue 的子类来初始化自定义父控制器的子控制器。 实施步骤 在故事板中,使用 DATOutletSegue 将父控制器连接到子控制器。 将每个 segue 的标识符设置为子控制器也应该连接的属性名称 在...
RBEasingSegues 请注意,此代码非常过时,不适合 iOS7+ 应用程序。 希望有一天我有机会更新这...灵感有意义的过渡( ) 沃伦摩尔 ( ) Evadne Wu ( ) Easings.net ( )去做添加更多动画层添加更多动画视图添加更多 Segue
性能测试方法和过程.包括性能测试的定义,分类,原理,测试人员角色和人员安排,测试过程的定义等.
这是使用 Storyboard 和 Swift 在两个场景之间进行基本 Push segue 的示例。 标题栏已从导航控制器中删除,以便为静态合成提供完整的画布。 用于快速流程原型制作。 这个怎么运作 启用 unwind/back 功能需要将此 ...
Ios-Segue:在视图控制器之间传递数据