【发布时间】:2012-02-09 16:01:08
【问题描述】:
我有一个 uitabbarcontroller 有 3 个项目。每个项目都有自己的导航控制器。 例如,在选项卡 1 中,用户导航到其他子视图,然后更改为选项卡 2,然后返回选项卡 1。选项卡一显示子视图。如何推送根视图控制器而不是子视图? 我的 uitabbarcontroller 是定制的,并且具有:
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
这是做某种 pushrootviewcontroller 的正确地方吗? 如何获取控制器?
编辑:
我已经实现了以下
UITabBarController<UITabBarControllerDelegate, UITabBarDelegate>
和
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if (tabBarController.selectedIndex == 0)
{
NSLog(@"test%@",@"test");
[self.tabBarController.selectedViewController.navigationController popToRootViewControllerAnimated:NO];
}
}
可以在调试器中看到 nslog 输出,但 popto root 不起作用。有什么想法吗?
【问题讨论】:
-
所以你的意思是,一旦用户从选项卡 1 切换到选项卡 2 并返回到选项卡 1,你希望第一个选项卡弹回其初始视图?
-
是的,这正是我想要的。
-
一种方法是在 -(void)viewDidDisappear 中添加 [self.navigationController popToRootViewControllerAnimated:NO]
-
是的,我也有一个,但我在一个视图上有 2 个子视图。所以我必须对每个人都这样做,但这会引发一个问题,我永远不会到达最后一个子视图。
-
通过 subView 你的意思是这是你的层次结构: UINavigationController > RootViewController > ViewController1 > ViewController2 ?并且用户在 ViewController2 中?
标签: objective-c ios5 storyboard