UITabBarController 、UIViewController和UINavigationControlle

今天碰到了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的属性学习:?url=KTtO1yfP73gHRIXuOD1LdtgJTh-80ylgNbYoNNKV-kfVmpYiV3RkJ7ur8-bnzzs8Fix-scJdO8Qhp1UEzgVKfZPg_TBxeRPVjhQYd8oaBi7

UITabBarController 、UIViewController和UINavigationController的具体讲解可参考:

参考:

附件:

最困难之时,就是我们离成功不远之日。

UITabBarController 、UIViewController和UINavigationControlle

相关文章:

你感兴趣的文章:

标签云: