码迷,mamicode.com
首页 > 其他好文 > 详细

UITabBarController 、UIViewController和UINavigationController的简单讲解

时间:2015-02-11 14:46:46      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:ios   uitabbarcontroller   uiviewcontroller   uinavigationcontroll   导航   

  今天碰到了tabbar下的viewController和viewController跳转到tabBar下的viewController的情况,本来以为很好解决,但是我天真了,解决了两个多小时还是无果,还查了很多资料,用了push和present都不行,最后用了通知的方式解决(结合了tabBar的selectedIndex的属性)

  改变UITabBar中当前显示的viewController可以通过以下两种方法:

    1.selectedIndex属性(根据英语翻译顾名思义就是当前选中的索引)

    2.self.selectedViewController属性(根据英语翻译顾名思义就是当前选中的ViewController)

这样在你想跳转的那个页面发送一个通知,并且传一个索引值到UITabBarController或者他的子类中,在这里你在注册一个通知,接收传过来的值,利用下面方法就可以实现了

- (void)changeTabBar:(NSNotification *)notification
{
    index = [[notification object] intValue];
    [self performSelector:@selector(delayMethod) withObject:nil afterDelay:0.5f];
}

-(void)delayMethod
{
    self.selectedIndex = index;
}


pop和present主要的区别体现在2点:

第1个区别,presentViewController方法,本质上是用一个模态ViewController遮住原来的ViewController,但是可以设置新模态窗口的尺寸,所以不一定会把旧的ViewController完全遮住(如果不设置,默认完全遮住)。而NavigationController,则是管理着一个ViewController栈,不是用模态窗口遮来遮去,而是执行进栈和出栈的操作,非常类似android中的Activity Stack。在storyboard拉线设置segue的时候,可以选择push和modal的方式,其实就是对应这2种跳转

第2个区别,则是在视觉效果上,通过presentViewController方法,看不出导航的感觉。而NavigationController,则在页面的最上方,创建一个NavigationBar,可以看出明显的导航的关系



  参考UITabBarController的属性学习:http://wenku.baidu.com/link?url=KTtO1yfP73gHRIXuOD1LdtgJTh-80ylgNbYoNNKV-kfVmpYiV3RkJ7ur8-bnzzs8Fix-scJdO8Qhp1UEzgVKfZPg_TBxeRPVjhQYd8oaBi7

  UITabBarController 、UIViewController和UINavigationController的具体讲解可参考:http://blog.csdn.net/rongxinhua/article/details/20214293

  参考:http://sinye.iteye.com/blog/2093281

附件:http://blog.csdn.net/yuxikuo_1/article/details/43020755

UITabBarController 、UIViewController和UINavigationController的简单讲解

标签:ios   uitabbarcontroller   uiviewcontroller   uinavigationcontroll   导航   

原文地址:http://blog.csdn.net/rainshenji/article/details/43731433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!