转自:http://www.cnblogs.com/anywherego/p/3542202.html

下面以OldViewController(oldC)的按钮btn点击后跳转到NewViewController(newC)为例说明:

1.Storyboard的segues方式

鼠标点击按钮btn然后按住control键拖拽到newC页面,在弹出的segue页面中选择跳转模式即可

优点:操作方便,无代码生成,在storyboard中展示逻辑清晰

缺点:页面较多时不方便查看,团队合作时可维护性差,多人合作时不建议使用这种方式

2.选项卡UITabBarController控制器

通过调用UITabBarController的addChildViewController方法添加子控制器

实例代码:

UITabBarController *tabbarVC = [[UITabBarControlleralloc] init];

OldViewController *oldC = [[OldViewController] init];

oldC.tabBarItem.title = @"控制器1";

oldC.tabBarItem.image = [UIImageimageNamed:@"old.png"];

NewViewController *newC = [[NewViewController] init];

newC.tabBarItem.title = @"控制器2";

newC.tabBarItem.image = [UIImageimageNamed:@"new.png"];

// 添加子控制器(这些子控制器会自动添加到UITabBarController的viewControllers数组中)

[tabbarVC addChildViewController:recent];

[tabbarVC addChildViewController:friends];

优点:代码量较少

缺点:tabbar的ios原生样式不太好看,(不常用,目前不建议使用),如果要使用,建议自定义tabbar

3.导航控制器UINavigationController

在oldC的btn的监听方法中调用:

[self.navigationController pushViewController:newC animated:YES];  //跳转到下一页面

在newC的方法中调用:

[self.navigationController popViewControllerAnimated:YES];  //返回上一页面

当有多次跳转发生并希望返回根控制器时,调用:

[self.navigationController popToRootViewControllerAnimated:YES];  //返回根控制器,即最开始的页面

4.利用Modal形式展示控制器

在oldC中调用:

[self presentViewController:newC animated:YES completion:nil];

在newC中调用:

[self dismissViewControllerAnimated:YES completion:nil];

5.直接更改 UIWindow的rootViewController

总结:

Storyboard方式适合个人开发小程序时使用,有团队合作或者项目较大时不建议使用

UITabBarController因为目前系统的原生样式不太美观,不建议使用

推荐使用UINavigationController和Modal,无明显缺点,而且目前大部分程序都使用这两种方式,只是看是否需要导航控制器而确定使用哪种方案

ios页面间跳转方式总结的更多相关文章

  1. iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例)

    iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单例) 实现了以下iOS页面间传值:1.委托delegate方式:2.通知notific ...

  2. 【转】iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)-- 不错

    原文网址:http://www.cnblogs.com/JuneWang/p/3850859.html iOS页面间传值的方式(NSUserDefault/Delegate/NSNotificatio ...

  3. iOS页面间传值的方式 (Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)   iOS页面间传值的方式(NSUserDefault/Delegate/NSN ...

  4. iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值实现方法:1.通过设置属性,实现页面间传值:2.委托delegate方式:3.通知notification方式:4.block方式:5.UserDefault或者文件方式:6.单例模式 ...

  5. IOS 页面间跳转

    常用的就两种 一种通过导航,一种直接跳 第一种 直接跳转 思路大致就是new一个目的页面,然后设置下页面跳转动画 中间还可以做点目的页面的数据初始化: ValueInputView *valueVie ...

  6. iOS页面间传值的五种方式总结(Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例) iOS页面间传值的方式(NSUserDefault/Delegate/NSNot ...

  7. iOS页面间传值的六种方式

    一般ios页面间的传值方式分为6种:1.属性传值:2.block:3.delegate:4.UserDefault:5.单例:6.通知. 0&1.block 先说我最常用的block吧,属性传 ...

  8. ios页面间传递参数四种方式

    ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Dele ...

  9. iOS 页面间传值 之 单例传值 , block 传值

    ios 页面间传值有许多,前边已经分享过属性传值和代理传值,今天主要说一下单例传值和 block 传值 单例传值:单例模式一种常用的开发的模式,单例因为在整个程序中无论在何时初始化对象,获取到的都是同 ...

随机推荐

  1. java 八种基本数据类型之与对应的封装类之间的相互转化

      迁移时间--2017年5月26日17:47:37 Author:Marydon 一.java数据类型之基本数据类型 UpdateTime--2017年1月9日17:31:14 (三)格式转换 1. ...

  2. GDALBuildVRT异构波段的支持

    目录 简述 修改源码 1.修改DatasetProperty结构体 2.修改VRTBuilder::AnalyseRaster函数 3.修改VRTBuilder::CreateVRTNonSepara ...

  3. 1253 Dungeon Master

    题目链接: http://noi.openjudge.cn/ch0205/1253/ http://poj.org/problem?id=2251 总时间限制: 1000ms  内存限制: 65536 ...

  4. 【TP3.2】详解_initialize() 和 __construct() 的区别和联系

    1.假设 一个AdminController.class.php 集成至 \Think\Controller 类, 我们来看看Controller.class.php的构造方法源码: /** * 架构 ...

  5. ios中两个view动画切换

    @interface ViewController () @property(nonatomic,retain)UIView *redview; @property(nonatomic,retain) ...

  6. iOS Main Thread Checker: UI API called on a background thread的解释

    Xcode打印栏出现如下警告: Main Thread Checker: UI API called on a background thread 这个是什么错误呢? 其实这并不一定是错误,也可以理解 ...

  7. Swift3 URL编码、解码用法addingPercentEncoding

    我们请求一个url时,最好要对其编码,转换成url识别的字符,以应对url里可能存在的中文.特殊符号等. swift3之前用法: url.stringByAddingPercentEscapesUsi ...

  8. javascript中的复制

    github 深度复制这个问题看似简单,实际上要想完美实现需要很多知识. 需要考虑Set,Map,Promise等类型的对象 这个库简洁明了,是一个小巧玲珑的JS库 Promise简单例子 funct ...

  9. lnmp+zabbix 3.2 的编译安装

    yum install pcre* gcc gcc-c++ autoconf automake zlib libxml libjpeg freetype libpng gd curl zlib-dev ...

  10. Tensorflow CNN入门

    一.概论 以图像识别来举例,比如我们让计算机如何识别一张猫的图片识别出猫呢? 老式的计算机视觉是如何做的呢? 比如OpenCV: 首先理解很多算法,比如如何检测线条(Edge Detection) 如 ...