【问题标题】:Reset UINavigationController to first controller when tab bar is clicked单击选项卡栏时将 UINavigationController 重置为第一个控制器
【发布时间】:2010-11-06 20:47:49
【问题描述】:

我的应用程序有 3 个标签栏项目,每个项目都映射到一个单独的视图控制器。我的问题是第一个控制器是 UINavigation 控制器,它向下钻取了大约 3 个级别。我的导航没有任何问题,但是当我点击不同的标签栏项目,然后当我返回到第一个标签栏项目(带有 UINav 控制器的项目)时,我希望它重置回导航序列中的第一个控制器。

我读到您必须执行以下操作:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    [[self navigationController] popViewControllerAnimated:NO];
}

但我不确定我应该把这个方法放在哪里。谁是标签栏控制器的代表?它是在 AppDelegate 中设置的……它应该放在那里吗?

谢谢。

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    当然,在您的 AppDelegate 中,当您创建 UITabBarController 时,您可以将标签栏控制器的委托设置为 self(即 AppDelegate)。然后,您可以将 tabBar:didSelectItem: 方法放在 AppDelegate 中,只要用户点击 UITabBarItem,就应该调用它。我将在您的 AppDelegate 中创建一个实例变量属性,并保留对用于导航控制器选项卡的 UITabBarItem 的引用(我们称之为 tabBarItemForNavControllerTab)。您还应该引用位于第一个选项卡中的导航控制器,以便您可以从 AppDelegate 控制它(我们称之为 navControllerInFirstTab)

    - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
    {
        if (item != self.tabBarItemForNavControllerTab) {
            [self.navControllerInFirstTab popToRootViewControllerAnimated:NO];
        }
    }

    您可以在 UINavigationController 上使用 popToRootViewControllerAnimated:,而不是单独从堆栈中弹出每个。

    【讨论】:

    • 嗯...这很有意义,但我似乎无法让 tabBar:didSelectItem: 做出响应(我现在只有一个 NSLog() 语句,没有任何显示)。我设置了 [tabBarController setDelete:self];但什么都没有。
    • 好吧,我想通了。我不得不改用- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController。谢谢!
    【解决方案2】:

    您需要将自己设置为 tabBar 的委托并实现 – tabBar:didSelectItem: 你向导航控制器询问它的视图 [[self navigationController ] viewControllers] 返回一个 UIViewControllers 的 NSArray,然后弹出数组中的每个视图控制器,直到到达根视图。

    http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarDelegate_Protocol/Reference/Reference.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 2019-08-16
      • 2018-06-08
      • 2019-08-21
      • 2014-11-16
      • 2018-01-20
      • 1970-01-01
      相关资源
      最近更新 更多