UITabbarController点击tabbar选项返回当前viewController最顶层
来源:互联网 发布:如何改变自己 知乎 编辑:程序博客网 时间:2024/04/30 15:31
转载地址:http://www.cnblogs.com/yeagen/archive/2012/03/09/2388151.html
如果你的程序界面如上图所示的这个样子,那么你一定是同时使用了UITabBarController以及UINavigationController吧。
再如果,你希望实现这样子的效果:
1。用户起初在“分类”这个视图里面查看了一些菜系,
2。然后他点击了“搜索”Tab,又在里面看了一些搜索出来的菜谱,
3。再然后当他准备回到“分类”这个视图的时候,事实上用户心里是希望回到“分类”这个视图的根视图,在那里重新选择分类,进入分类再看菜谱。但是iPhone默认是记忆用户之前在第一步里面的那个视图的,不会自动回到根视图。
解决办法是将这个
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
viewController popToRootViewControllerAnimated:YES];
}
添加到AppDelegate.m文件中。一般人都是这么做的。
但是!
其实在这里隐藏着一个问题,如果如图所示你的4个TabBar都是指向4个NavigationController,那么没有问题,运行OK。
但如果你的4个TabBar有任何一个指向的不是NavigationController,那么程序就会crash。因为非NavigationController不能够响应 popToRootViewControllerAnimated: 方法。
我的第4个TabBar指向的是一个ViewController,程序运行之后一点击第4个TabBar就崩溃,自己也只是在ViewController和IB里面仔细找错误,浪费了很多时间。
下面贴出更加安全的方法,把上面的那段代码改成这样子:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([viewController isKindOfClass:[UINavigationController class]]) {
[(UINavigationController *)viewController popToRootViewControllerAnimated:YES];
}
}
就好了。
- UITabbarController点击tabbar选项返回当前viewController最顶层
- UITabbarController点击tabbar选项返回当前viewController最顶层
- 点击tabbar选项返回当前viewController最顶层
- 获取当前最顶层的ViewController
- iOS 获取当前最顶层的ViewController
- 获取当前最顶层的ViewController
- 自定义tabbarcontroller 和 双击自定义的btn 的时候使当前viewcontroller 返回最顶层
- iOS开发 - 获取当前View最顶层的ViewController
- iOS开发之获取当前最顶层的ViewController
- iOS开发 获取当前视图最顶层的ViewController
- 点击tabBar返回到当前tabBar的初始视图
- UITabBarController点击UITabBarItem 禁止跳转ViewController
- ios点击隐藏tabBar 返回tabBar
- UITabbarController 点击返回第一个视图
- tabbar 点击 两次 默认 返回 rootVC
- iOS 获取当前最上层ViewController
- UITabBarController 控制ViewController
- UITabBarController更换tabBar背景图片
- Hibernate列名是保留字的解决方法
- POJ1860
- [C#基础知识系列]专题十:全面解析可空类型
- Windows下搭建基于ssh的git服务器
- libevent源代码分析--buffer的使用
- UITabbarController点击tabbar选项返回当前viewController最顶层
- 神啊,赶紧崩溃吧,再不崩溃,地球人都要混不下去了。
- [C# 基础知识系列]专题十一:匿名方法解析
- 个人浅谈虚拟货币--论比特币跟瑞波币
- cricking code 1.1
- 黑马程序员——反射
- 【EXCEL】 EXCEL VBA SQL UPDATE:操作必须使用一个可更新的查询
- ARM-交叉编译器各版本的区别
- 黑马程序员——抽象类&接口