在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两个操作。
分享到:
相关推荐
我们将深入探讨这个话题,并通过分析压缩包内的"test"文件,了解其背后的编程概念和技术。 首先,iOS中的页面导航主要由两种常见的机制实现:UINavigationController和Storyboard。UINavigationController是一个...
作者围绕某制造型企业信息化项目、某省电信公司业务系统、某通信企业Web业务系统和某集成商的性能选型测试四个案例,逐一描述了项目的背景、特点、性能测试过程和案例小结,每个案例都按照PTGM模型步骤和活动进行...
总结来说,测试软件工具的选择应根据项目需求、技术复杂度和团队能力等因素综合考虑。正确地应用这些工具能够显著提升测试效率,保证软件质量,同时降低测试成本。随着技术的发展,测试工具的功能日益强大,智能化和...
### 软件性能测试基本概念 ...**1.4 本章小结** 软件性能测试的基本概念涉及多个维度,包括不同角色对性能的理解、关键性能指标以及常用的测试方法。掌握这些基础知识对于开展有效的软件性能测试至关重要。
总结,软件测试和测试工具的选择应根据项目需求、资源和测试目标来定制。有效的测试自动化计划能提高测试效率,减少人为错误,而选择合适的测试工具是优化测试流程的关键。在实施过程中,应综合考虑测试的全面性、...
在分析和总结这篇有关“标准化沟通结合AIDET沟通模式在普外科护患沟通应用研究”的文档内容时,首先需要注意的是AIDET沟通模式。AIDET是一个专门用于医疗环境中的沟通工具,旨在提高患者护理和医疗服务的品质。AIDET...
通过博客文章中的源代码分析,我们可以学习到如何实际操作这些概念,例如如何在代码中创建和配置Navigation Controller,如何设置导航栏的标题和按钮,以及如何在不同视图控制器之间进行数据传递。 总之,...
本文将详细介绍五种在iOS中实现界面跳转的方法,并分析它们的优缺点。 1. **Storyboard Segues** 故事板(Storyboard)的Segues是iOS开发中最直观的方式。通过在Interface Builder中从一个视图控制器(如...
在分析此项目时,你应该关注UIViewController之间的导航,特别是使用segue连接的地方,因为这些地方容易出现生命周期问题。检查Delegates和DataSources是否被正确设置和释放,以及 ARC(Automatic Reference ...
- **Segue 的性能测试流程**:强调逐步建立性能基线、设定目标、反复测试直至找到性能瓶颈的过程。 - **PTGM 模型**(性能测试通用模型):包括测试准备、工具引入、测试计划制定、测试设计与开发、测试执行与管理、...
在这个项目中,开发者利用Storyboard进行界面重构,意味着他们可能通过拖放UI元素,设置segue(页面间跳转)以及定义控制器间的交互,提高了项目的可维护性和用户体验。Storyboard的优势在于减少了代码量,使得界面...
"ios5 code demo"可能包含使用Storyboard设计界面、实现Segue之间的跳转,以及利用Auto Layout和Size Classes进行布局的示例。 第四,iOS 5引入了ARC(Automatic Reference Counting),这是一项内存管理技术,自动...
- **关系与segue**:讨论了如何在不同的视图控制器之间建立关系以及使用segue进行视图之间的导航。 - **表格**:介绍了UITableView的基本使用方法及其在MasterViewController中的实现。 - **编程...
SilkTest是由美国Segue公司开发的一款高级软件GUI自动化测试工具,尤其适用于回归测试。它支持多种应用程序类型,包括Web、Java以及传统的C/S架构,为用户提供了一个集成开发环境(IDE),使得4Test文件的开发、编辑...
总结,开发iOS银行系统是一项综合性的工程,涉及Swift编程、UI设计、数据存储、网络通信、安全策略等多个方面。熟练掌握这些知识点,才能打造出用户信赖、功能完善的移动银行应用。在实际操作中,不断学习和实践,...