敏捷大拇指 首页 资讯 查看内容

pushViewController和popViewController实现页面切换实践

快来登录
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑

先感谢 敏捷大拇指 Swifthumb.com QQ群里大神指导(敏捷大拇指 Swifthumb 是最早的Swift开发者社区, QQ群:二群 245285613 / 一群 343549891 一群已满,请加二群 ),然后在网上搜了一些帖子,实践了利用self.navigationControllerpushpop进行页面切换。(之前一直用present和dismiss,以及在一个ViewController内用addSubView添加多个view,利用hidden属性来进行不同界面的展现)。


1、要用push和pop需先有一个navigationController,创建一个类

@interface MyNavigationViewController : UINavigationController

简单的处理一下就可以,在其实现里面定制自己所需要的导航条,我刚好只想用一下push和pop,导航条不需要,就[self setNavigationBarHidden:YES];定制搞定。

在网上搜怎样隐藏导航条,很多直接回复不使用navigationController,那也将不能使用push和pop实现页面切换咯(目前测试是这个样子),实际上看一下头文件UINavigationController.h就可以找到一个属性:

@property(nonatomic,getter=isNavigationBarHidden) BOOL navigationBarHidden;(看接口看文档)。


2、有了MyNavigationViewController这个类,实例化一个对象,并用一个rootViewController对其进行初始化:

MyNavigationViewController* myNaviga = [[MyNavigationViewController alloc]initWithRootViewController:myMainView];


3、在之前的页面把这个myNaviga present出来,就可以使用了,这个时候出现的界面就是myMainView


4、接下来的页面都可以利用self.navigationController push和pop进行页面切换了。(貌似就这样)

navigationController相当于在管理这些VC,所管理的这些页面都是平级的,相互平行,需要谁就拿过来放到最上(push),[self.navigationController pushViewController:aVC animated:NO];pop则将最上层挪走,[self.navigationController popViewControllerAnimated:NO];展现出前一个页面。整个就是堆放的过程。

这里要说一个接口[self.navigationController popToViewController:(UIViewController *) animated:(BOOL)];,如果我们一层一层push了很多页面出来了,这个接口可以跳过中间一些页面返回到指定的VC。

这个的具体操作呢,UINavigationController有一个属性@property(nonatomic,copy) NSArray *viewControllers;(看接口看文档)。每次push出一个VC,都会添加到这个array里面,从这个array找到自己要跳转到的那个页面,作为popToViewController:的参数就可以。

前面说每次push一个VC都会将其添加到array里面,pop则将挪走的页面从array移除,popToViewController:则是将所跳转到的页面之上的所有页面都从array中移除,

对了,在push出来的页面中调用dismiss将会直接连同rootViewController一起端掉,返回到3里面的“之前的页面”。

很简单的东西,一说就搞复杂,而且描述的方式不同的人也会不一样,希望是说清楚了,但愿对比我还新的新手有帮助;如果我理解的不正确,各位大刀阔斧砍过来啊。



淘帖专辑

全球最大的Swift开发者社区敏捷大拇指 Swifthumb.com整理的淘帖:

  1. Swift开发安卓Android App
  2. Swift Linux Server服务后端
  3. Swift开发微软Windows .Net
  4. Swift和其它语言对比
  5. 开源Swift Open Source
  6. Swift 3
  7. Swift游戏开发
  8. Swift源代码 App/后台/OS
  9. Swift 高仿App源代码库
  10. Swift笔试面试题库宝典
  11. 第三方库SDK
  12. 软件工具
  13. LLVM编译器
  14. Xcode使用技巧
  15. App市场推广下载
  16. Growth Hack 黑客增长



都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。您的赞赏是我前进的方向。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

刚表态过的朋友 (0 人)

发表评论

最新评论

引用 zangcw 2014-7-11 17:25
说的是有些混乱, 不过赞一个。分享是一种精神!加油!
引用 清萍剑客 2014-7-14 09:13
{:soso_e179:}应该鼓励{:soso_e130:}
引用 安卓大师 2016-9-6 00:29
有点乱啊
引用 数学家 2016-9-28 14:00
赞!正在玩navigationController

查看全部评论(4)

相关阅读

淘帖专辑
我要发帖

全部专栏

文章精选
广告位招租

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
关闭

One More Thing 上一条 /1 下一条

热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2017 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
返回顶部