转自: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. 【Linux】条件判断eq、ne、gt、lt、ge、le

    整数比较: -eq(equal) 相等 -ne(inequality) 不相等 -gt(greater than) 大于 -lt(less than) 小于 -ge(greater equal) 大于 ...

  2. log4j2的xml的配置样例

    log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status ...

  3. vmware中的 CentOS7 虚机磁盘动态扩容

    0.在vmware的配置项中,将虚机的磁盘大小调大,步骤简单,此处略 查看当前状态 文件系统状态 df -h 磁盘状态 lsblkfdisk   -l  1.首先要再创建一个物理分区 (使用fdisk ...

  4. HP ALM

    HP ALM 使用经验 使用HP ALM(Application Lifecycle Management)软件有一个多月的时间了,我是从安装,部署,建项,配置,使用,再到问题收集,这个过程过来的.发 ...

  5. 基于kettle8的web端调度监控平台

    发布时间:2018-11-16   技术:spring+springmvc +beetlsql+quartz+kettle8   概述 Kettle调度监控平台(以下简称KS)是一个自主开发的java ...

  6. 【php将日志写入一个按时间天来分类的文件】put_file_contents()

    具体参考php官方文档:http://php.net/manual/zh/function.file-put-contents.php 具体参数:成功返回插入数据的字节数,失败返回false 使用示例 ...

  7. PHP哈希表碰撞攻击

    哈希表是一种查找效率极高的数据结构,PHP中的哈希表是一种极为重要的数据结构,不但用于表示数组,关联数组,对象属性,函数表,符号表,还在Zend虚拟机内部用于存储上下文环境信息(执行上下文的变量及函数 ...

  8. mysql/mariadb基于ssl的主从复制

    当mysql/mariadb跨越互联网进行复制时别人可以窃取到mysql/mariadb的复制信息, 这些信息是明文的, 因此存在不安全性, 这里通过ssl对复制的信息进行加密 1. 创建证书中心 在 ...

  9. rc522头文件

    //本头文件是以51为蓝本 #ifndef __rc522_h__ #define __rc522_h__ #include <string.h> #include <wiringP ...

  10. Ubuntu菜鸟入门(十五)—— 安装aras2下载软件

    一.安装arias2 sudo add-apt-repository ppa:t-tujikawa/ppa sudo apt-get update sudo apt-get install aria2 ...