标签: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