【问题标题】:How to popToRoot on one tab when the user is in a different tab?当用户在另一个选项卡中时,如何在一个选项卡上弹出ToRoot?
【发布时间】:2011-11-15 20:34:59
【问题描述】:

我有一个有四个标签的 iPhone 应用程序。在选项卡 1 上有一个 UINavigationController。用户可以在视图堆栈上深入三层。

假设用户转到导航选项卡 1 的第 2 级,然后切换到选项卡 3。有没有办法制作一个用户可以按下的按钮,然后在选项卡 1 上弹出该导航控制器(在场景),而它们仍在选项卡 3 上?这样当再次触摸 Tab 1 时,它们将处于根级别?

我不希望每次他们触摸 Tab 1 时它都处于根级别,只有当他们触摸 Tab 3 上的那个按钮时,它才会将 Tab 1 弹出到根级别。

【问题讨论】:

  • 您可以尝试在-viewWillDisappear 中执行此操作,也许会通知何时弹出它(例如切换标签)。

标签: iphone objective-c ios xcode cocoa-touch


【解决方案1】:

您可以向任何有效对象发送消息,只要您有对它的引用。如果您的应用委托拥有 UITabBarController 并且 UITabBarController 中的每个视图控制器都是 UINavigationController 那么您可以在应用中的任何位置执行以下操作:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication].delegate;
UINavigationController *navController = [appDelegate.tabBarController.viewControllers objectAtIndex:indexOfNavController];
[navController popToRootViewController:NO];  // animation not needed but could be YES

【讨论】:

    【解决方案2】:

    使用swift 语言。将此代码放入AppDelegate

    UITabBarControllerDelegate 添加到AppDelegate

    func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController){
        if let navController = viewController as? UINavigationController{
            navController.popToRootViewControllerAnimated(false)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 2020-08-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 2013-02-15
      • 2014-02-05
      相关资源
      最近更新 更多