接触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 界面间跳转方法总结的更多相关文章

  1. ios页面间跳转方式总结

    转自:http://www.cnblogs.com/anywherego/p/3542202.html 下面以OldViewController(oldC)的按钮btn点击后跳转到NewViewCon ...

  2. IOS 页面间跳转

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

  3. 《转载》两个activity界面间跳转切换动画效果

    1overridePendingTransition Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画. 它包括两个部分:一部分是第一个activity退出 ...

  4. iOS 程序间跳转传参(支付和地图)

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  5. APICloud界面间跳转

    UZModule提供属性controller,可通过该控制器对目标控制器进行push或者present操作. // push[self.viewController.navigationControl ...

  6. iOS开发——应用间跳转

    iOS开发过程中,我们经常碰到应用间跳转的情景: 1.使用第三方用户登录,跳转到需授权的App或跳转到分享app的对应页面 *需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名.密 ...

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

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

  8. [转]iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

    参考:http://www.mamicode.com/info-detail-469709.html 一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能( ...

  9. iOS之浅谈纯代码控制UIViewController视图控制器跳转界面的几种方法

    .最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能,有 ...

随机推荐

  1. 动态加载dll--不占用文件

    Assembly assembly = Assembly.Load(path); 用上面的方法可以动态的加载到dll,但是用这种方法加载到的dll一直到程序运行结束都是占用的,在此期间不能够对此进行升 ...

  2. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.9

    (Schur's Theorem) If $A$ is positive, then $$\bex \per(A)\geq \det A. \eex$$ Solution. By Exercise I ...

  3. 15、NDK开发初步

    一.什么是NDK? NDK是Android让你潜入原生组件(C/C++开发)的一套开发套件 Android应用程序是运行在Dalvik虚拟机中的 ,NDK允许你通过原生代码实现部分的应用程序模块 . ...

  4. POJ2104 K-th Number 划分树 模板题啊

    /*Source Code Problem: 2104 User: 96655 Memory: 14808K Time: 1282MS Language: G++ Result: Accepted S ...

  5. 交易策略研究 R库

    本文在Creative Commons许可证下发布 交易策略研究 R库,直接安装:xts, TTR,quantmod,RTAQ,PerformanceAnalytics,FactorAnalytics ...

  6. CentOS7 安装98五笔输入法

    86版的安装方式,网上找到一堆,折腾了很久才把98版的安装上,记录一下. 从这里下了这个 http://bbs.chinaunix.net/forum.php?mod=viewthread&t ...

  7. 初识Ajax---简单的Ajax应用实例

    原文: http://www.ido321.com/347.html 从网页前端输入提示范围内的字符,然后显示从后台返回的结果 1: <html> 2: <head> 3: & ...

  8. Auto Layout 使用心得

    此系列文章代码仓库在 https://github.com/johnlui/AutoLayout ,有不明白的地方可以参考我的 Auto Layout 设置哦,下载到本地打开就可以了. 简介 Auto ...

  9. rank() | dense_rank() | row_number() over(PARTITION BY sex order by age desc ) 的区别

    1.row_num() over()函数:根据某个字段排序后编号1,2,3.. select *,ROW_NUMBER() over ( order by majorid) as numfrom St ...

  10. The Woman in Red Is Seen as a Threat by Other Wom

    The Woman in Red Is Seen as a Threat by Other Wom In the 1939 film classic The Women, much is made o ...