ios 跳转指定页面和插入页面
来源:互联网 发布:大数据新闻是什么 编辑:程序博客网 时间:2024/06/04 18:03
(1)Navigation+Tab构建项目
目前市面上大多数的iOS App,都是使用Navigation+Tab的方式来构建,这基本上是一种主流趋势。因为有了这两个工具,可以方便的对程序的流程和页面进行控制,整体的逻辑结构也会变得清晰。我的项目主要使用xib来构建项目,已经删除了自带的Main.storyboard。
在AppDelegate.h中声明一个TabBar属性:
在AppDelegate.m中分别构造Navigation和Tab。我这里的思路是:把TabBar作为容器,有三个Tab页,每个Tab页分别管理自己的Navigation,然后把这个TabBar作为window的根视图。最后让window显示即可。
注意:window一定要使用makeKeyAndVisible来进行显示,否则App启动后是黑屏。
(2)Navigation和TabBar的显示与隐藏设置
当我经过(1)中的执行后,会发现App中的每个页面都有Navigation和Tab,有时候这并不符合我们的要求,在某些页面需要隐藏Navigation或者Tab,可以进行如下设置。
某个页面要隐藏导航栏:
上面的设置最好在viewWillAppear和viewWillDisappear中配对进行设置。否则会有其他的一些小问题。
隐藏某个页面的TabBar:
有时候在pop的时候需要显示或者隐藏TabBar,也可以通过hidesBottomBarWhenPushed设置。(3)pop到界面栈中存在的某个界面
对于iOS中的界面栈,我们需要有一个明确的认识。界面不断push的过程,其实就是界面不断入栈的过程,当前显示的界面,就是栈顶界面。界面pop的过程,就是界面不断出栈的过程,出栈后的界面也就不可见了。可见的永远都是栈顶界面。系统默认的返回键或者pop方法都是返回到上一个界面。但是在实际开发中,我们有这样的需求,我们需要pop到隔着好几个界面的前面某个界面,那么应该怎么做呢?
以上代码的意思是当前界面栈中是否有SecondViewController,如果有的话,就会pop到SecondViewController,假设当前界面为A界面,那么A界面和SecondViewController之间的所有界面都会出栈。SecondViewController界面就会在栈顶。所以这就是for循环遍历的过程。
(4)重构界面栈,pop到之前不存在的界面
为什么要重构界面栈?在实际开发中会遇到这样的情况,在某几个界面间是一个死循环,在进行跳转的时候不断在几个界面间push,然后同样一个界面就会在栈中出现很多次,虽然这些栈都是不同的实例,但是这样完全没有必要。栈中界面越来越多,难道不会影响性能吗?并且默认有这样的准则:一个VC在栈中只有一个。所以,在必要时候,我们不要老是push,如果一个界面已经出现过,我们可以尝试pop。甚至没有出现过,我们可以在栈中插入一个界面,然后pop到该界面。这是为了从性能上去考虑,我们要不断维护界面栈。界面栈其实就是一个数组,插入删除操作非常方便,但是同样要提高警惕,容易造成crash。
(5)获取界面栈
界面栈其实是由Navigation来获取的。每一次push就是进栈,每一次pop就是出栈。使用self.navigationController.viewControllers即可。我在GlobalKit中已经封装了方法。需要在查看界面栈的地方调用该方法即可,然后就可以打印该数组了。
- ios 跳转指定页面和插入页面
- ios 跳转指定页面和插入页面
- iOS跳转指定页面
- IOS推送消息处理跳转指定页面
- iOS UINavigationController跳转到指定页面
- ios 指定返回的跳转页面
- iOS导航跳转到指定页面
- IOS 通知栏点击跳转指定页面
- ios-应用程序跳转到指定的页面
- iOS 从AppDelegate中跳转指定页面
- 跳转到指定页面
- 指定时间,跳转页面
- navigationController跳转指定页面
- 跳转到指定页面
- iOS层级跳转(UINavigationController跳转返回到指定的页面)
- iOS拿到推送从而跳转到指定页面
- iOS 点击远程通知消息,跳转到指定页面 (控制器)
- iOS 点击通知栏消息跳转到指定的页面
- BZOJ2530 [Poi2011]Party
- 深刻理解Python中的元类(metaclass)
- java 实现https
- java代码优化
- 认清Android框架 MVC,MVP和MVVM
- ios 跳转指定页面和插入页面
- SVN for exclipse
- Android开发艺术探索 学习笔记
- [刷题]算法竞赛入门经典(第2版) 5-2/UVa1594 - Ducci Sequence
- jsp页面如何把request域中的list对象转化成js能灵活调用的js对象
- 简明解释算法中的大O符号
- 推荐一个caffe的学习教程
- 微信获取用户地理位置信息-微信jsapi接口
- lnmp安装与配置