在iOS开发中,比较常用的切换视图的方式主要有以下几种:
1. push、pop
使用举例(ViewController假设为需要跳转的控制器):
[self.navigationController pushViewController:ViewController animated:YES]; //入栈,跳转到指定控制器视图 [self.navigationController popViewControllerAnimated:YES]; //弹栈,返回到前一个视图 [self.navigationController popToViewController:ViewController animated:YES]; //弹栈 返回指定控制器所在视图 [self.navigationController popToRootViewControllerAnimated:YES]; //弹栈 返回根控制器视图
2. modal
使用举例(ViewController假设为需要跳转的控制器):
[self presentViewController:ViewController animated:YES completion:nil]; //跳转到ViewController所在视图 [self dismissModalViewControllerAnimated:YES]; //退出当前视图
3. 切换window的rootViewController
使用举例(ViewController假设为需要跳转的控制器):
UIWindow *window = [UIApplication sharedApplication].keyWindow; //获得主窗口 window.rootViewController = [[ViewController alloc] init]; //将主窗口的根视图设置为当前控制器
4. 将另一个控制器的视图添加为当前控制器视图的子视图
[self.view addSubview: ViewController.View]; //实现复杂界面的时候常用
简要介绍下各种方式的优点和不足:
1、push、pop方式
优点:控制器切换是可逆的,且原始图不会销毁
缺点:依赖于UINavigationController,故需要有一个导航控制器,与某些界面不需要导航控制器有可能会冲突
push操作是可逆的,即控制器的切换时可逆的。
2、modal
优点:控制器切换是可逆的,且原始图不会销毁
缺点:跳转没有push方式自由,dismiss方式只能按顺序返回,不能跳跃, 从前一个modal到后一个时候,前一个控制器不会消失,一直在内存中
3、切换window的rootViewController
优点:跳转直接迅速,而且可以销毁前一个控制器,因为将window的强引用改为当前控制器,故前一个控制器会消失(ARC环境)
缺点:视图跳转不可逆
4、将一个控制器的视图添加到当前视图上面
优点:通过一个控制器将另一控制器设置为属性,自由读取其他控制器中的视图从而能够实现复杂UI界面
缺点:复杂,多数场合不适用
列表比较如下:
比较项目 | push、pop | modal | 切换窗口的根控制器 | 添加子视图 |
销毁源视图 | 否 | 否 | 是 | 否 |
使用场合 | 有导航控制器,需要能够返回前一个视图的情况 | 没有导航控制器的跳转,能返回前一个视图 | 版本新特性或者不需要保留前一个控制器的情况 | 需要实现复杂界面的情况 |
是否有导航控制器 | 是 | 否 | 否 | 否 |
总结
视图切换的方式各有利弊,需要根据我们的需求选择使用的方式,以上就是本文的全部呢荣,水平有限,若有不正确之处,望各位批评指正,共同学习,共同提高!
实现各种页面过渡切换效果。前4种是UIView,后面都是 Core Animation。 下面8种是传说中的私有API(作者测试过,能通过审核,请放心使用)。所有效果整合到一个例子里,代码较清晰,适合新手阅读。 [Code4App.com]
本文向大家介绍iOS开发中runtime常用的几种方法示例总结,包括了iOS开发中runtime常用的几种方法示例总结的使用技巧和注意事项,需要的朋友参考一下 前言 Objective-C runtime是一个实现Objective-C语言的C库。它是一门编译型语言、也是一门动态型的语言(这里强调下OC是静态类型语言),之前没接触runtime的时候也不觉着它有多重要,接触之后才发现其实runti
本文向大家介绍分享几种比较简单实用的JavaScript tabel切换,包括了分享几种比较简单实用的JavaScript tabel切换的使用技巧和注意事项,需要的朋友参考一下 闲着没事,随便写了个简单的JavaScript tabel切换,大家有兴趣的看看,有需要的就拿去吧.废话不说了,大家看代码吧 方法一:for循环+if判断当前点击与自定义数组是否匹配 方法二:自定义index为当前点击
上、下、左、右四个方向滑动显示底部视图。 作者说:这个应用在主要是通过一个第三方框架(ViewDeck),实现侧边栏滑动切换视图,顶部和底部滑动切换视图。 [Code4App.com]
本文向大家介绍iOS开发tips-UINavigationBar的切换效果,包括了iOS开发tips-UINavigationBar的切换效果的使用技巧和注意事项,需要的朋友参考一下 概述 在iOS系统中,如果控制器是以push方式进行管理的话,那么事实上多个控制器是共享的同一个导航栏。当然iOS系统的设计无可厚非,但是国内的应用经常会遇到很多个性的设计,就比如说A push到 B,A可能有导航栏
本文向大家介绍iOS中延时执行的几种方式比较及汇总,包括了iOS中延时执行的几种方式比较及汇总的使用技巧和注意事项,需要的朋友参考一下 前言 在开发过程中,我们有时会希望把一些操作封装起来延迟一段时间后再执行。本文列举了四种延时执行某函数的方法及其一些区别。假如延时1秒时间执行下面的方法。 1.performSelector方法 这是iOS中常用的一种延迟执行方法. 此方式要求必须在主线程中执行,