【问题标题】:iOS 5 tab view changed push the root controller (storyboard)iOS 5 选项卡视图更改推送根控制器(情节提要)
【发布时间】: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


【解决方案1】:

好的,代码应该是这样的。现在它按我想要的方式工作了。

-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if (tabBarController.selectedIndex == 0)
{
    if ([viewController isKindOfClass:[UINavigationController class]])
        [(UINavigationController*)viewController popToRootViewControllerAnimated:NO];
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多