ios 界面间跳转方法总结
接触ios也有一段时间了,偶然间,我们公司的技术总监兼我的导师,问我,你可知道,界面间的跳转有几种方式?我说出了两种,但是也有点含糊其辞,于是我就想一定要找个时间总结一下。有句话说的好,“前人种树,后人乘凉”,目前作为一个乘凉者,我也希望能种一些树木,为代码世界营造一份清新。好了,话不多说,进入主题。
下面以FirstViewController(FVC)的按钮button点击后跳转到SecondViewController(SVC)为例说明:
方式一:Storyboard的segues方式
鼠标点击按钮button然后按住control键拖拽到SVC页面,在弹出的segue页面中选择跳转模式即可

优点:操作方便,无代码生成,在storyboard中展示逻辑清晰
缺点:页面较多时不方便查看,团队合作时可维护性差, 多人合作时不建议使用这种方式。
方式二:选项卡UITabBarController控制器
通过调用UITabBarController的addChildViewController方法添加子控制器,代码实例如下:
|
1
2
3
4
5
6
7
8
9
10
|
UITabBarController *tabbarVC = [[ UITabBarController alloc ] init ];FirstViewController *FVC = [[FirstViewController ] init ];FVC.tabBarItem.title = @"控制器1" ;FVC.tabBarItem.image = [ UIImage imageNamed : @"first.png" ];SecondViewController *SVC = [[SecondViewController ] init ];SVC.tabBarItem.title = @"控制器2" ;SVC. tabBarItem.image = [UIImage imageNamed : @"new.png" ];// 添加子控制器(这些子控制器会自动添加到UITabBarController的 viewControllers 数组中)[tabbarVC addChildViewController :FVC];[tabbarVC addChildViewController :SVC]; |
优点:代码量较少
缺点:tabbar的ios原生样式不太好看,(不常用,目前不建议使用),如果要使用,建议自定义tabbar
方式三:导航控制器UINavigationController
在FVC的button的监听方法中调用:
|
1
|
[self.navigationController pushViewController:newC animated:YES]; //跳转到下一页面 |
在SVC的方法中调用:
|
1
|
[self.navigationController popViewControllerAnimated:YES]; //返回上一页面 |
当有多次跳转发生并希望返回根控制器时,调用:
|
1
|
[ self .navigationController popToRootViewControllerAnimated: YES ]; //返回根控制器,即最开始的页面 |
方式四:利用 Modal 形式展示控制器
在FVC中调用:
|
1
|
[ self presentViewController:SVC animated: YES completion:nil]; |
在SVC中调用:
|
1
|
[ self dismissViewControllerAnimated: YES completion: nil ]; |
方式五:直接更改 UIWindow 的 rootViewController
总结:
Storyboard方式适合个人开发小程序时使用,有团队合作或者项目较大时不建议使用
UITabBarController因为目前系统的原生样式不太美观,不建议使用
推荐使用UINavigationController和Modal,无明显缺点,而且目前大部分程序都使用这两种方式,只是看是否需要导航控制器而确定使用哪种方案
本文永久地址:http://blog.it985.com/13090.html
本文出自 IT985博客 ,转载时请注明出处及相应链接。
ios 界面间跳转方法总结的更多相关文章
- ios页面间跳转方式总结
转自:http://www.cnblogs.com/anywherego/p/3542202.html 下面以OldViewController(oldC)的按钮btn点击后跳转到NewViewCon ...
- IOS 页面间跳转
常用的就两种 一种通过导航,一种直接跳 第一种 直接跳转 思路大致就是new一个目的页面,然后设置下页面跳转动画 中间还可以做点目的页面的数据初始化: ValueInputView *valueVie ...
- 《转载》两个activity界面间跳转切换动画效果
1overridePendingTransition Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出 ...
- iOS 程序间跳转传参(支付和地图)
两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...
- APICloud界面间跳转
UZModule提供属性controller,可通过该控制器对目标控制器进行push或者present操作. // push[self.viewController.navigationControl ...
- iOS开发——应用间跳转
iOS开发过程中,我们经常碰到应用间跳转的情景: 1.使用第三方用户登录,跳转到需授权的App或跳转到分享app的对应页面 *需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名.密 ...
- iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)
iOS页面间传值实现方法:1.通过设置属性,实现页面间传值:2.委托delegate方式:3.通知notification方式:4.block方式:5.UserDefault或者文件方式:6.单例模式 ...
- [转]iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
参考:http://www.mamicode.com/info-detail-469709.html 一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能( ...
- iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法
.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有 ...
随机推荐
- JMX-JAVA进程监控利器
Java 管理扩展(Java Management Extension,JMX)是从jdk1.4开始的,但从1.5时才加到jdk里面,并把API放到java.lang.management包里面. 如 ...
- 《深入Java虚拟机学习笔记》- 第7章 类型的生命周期/对象在JVM中的生命周期
一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令 ...
- POJ 2435Navigating the City(bfs)
题意:给你一个地图,’+’代表十字路口,‘-’‘|’表示街道,‘.’表示建筑物,‘s’,’E’ 起点和终点.输出从起点到终点的的 最短路径(包括方向和沿该方向的经过的十字路口数) 分析:ans[i][ ...
- 【译】 AWK教程指南
前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...
- Excel2010: Excel使用小技巧(不断更新)
目录 1. 如何设置定时保存2. 调出“开发工具”功能区3. 在Excel单元格中输入对号和错号4. 设置单元格自动换行5. 向Excel中导入.txt文件6. 如何批量删除超链接7. 如何冻结窗格8 ...
- VBScript: 正则表达式(RegExp对象)
RegExp对象是VBScript中用于提供简单地正则表达式支持的对象.VBScript中所有和正则表达式有关的属性和方法都有这个对象有关联. 一.RegExp对象的属性和方法(三个属性,三个方法) ...
- ASP.NET_验证控件(class0620)
为什么使用验证控件 当需要让用户输入数据时,用户有可能输入不符合我们程序逻辑要求的信息,所以我们要对输入进行验证. 客户端验证(用户体验,减少服务器端压力) 服务器端验证(防止恶意攻击,客户端js很容 ...
- Samung Galaxy III I535 黑砖救活经过
昨天不小心把手机给搞成黑砖了,如下是昨天发帖求助,结果还没审核过,晕. http://bbs.zhiyoo.com/forum.php?mod=viewthread&tid=9673138&a ...
- phpMyAdmin导入本地数据库
phpMyAdmin导入本地数据库 在PHPMyAdmin导入数据时,点击导入--执行后出现错误: 您可能正在上传很大的文件,请参考文档来寻找解决方法. 可能就是因为数据库太大的原因. 那么如何 才能 ...
- 转载LINQ TO Entity 在数据库发生更改时更新实体数据模型 .edmx 文件
转载原出处:http://blog.csdn.net/litao2/article/details/8629335 在“模型浏览器”中,右击 .edmx 文件,然后选择“从数据库更新模型”. 模型更新 ...