【问题标题】:How are people popping their UINavigationController stacks under a UITabBarController?人们如何在 UITabBarController 下弹出他们的 UINavigationController 堆栈?
【发布时间】:2011-01-31 04:42:20
【问题描述】:

我有四个 UINavigationController,每个都分配给 UITabBarController 中的一个选项卡。每个 UINavigationController 管理一个 UIViewController,它本身可以分层地分支到它下面的其他 UIViewController。

我的问题是,如果用户在一个选项卡下导航到一个 UIViewController,该 UIViewController 层次结构低于由 UINavigationController 管理的主 UIViewController,然后用户推送另一个选项卡,然后返回到原始选项卡,我怎样才能让用户看到由 UINavigation 控制器管理的主 UIViewController? 而不是他离开的页面?

在IB中设置UITabBarController

【问题讨论】:

    标签: iphone xcode uiviewcontroller uinavigationcontroller uitabbarcontroller


    【解决方案1】:

    实施UITabBarControllerDelegate 协议并在您的委托被通知用户选择了不同的选项卡时弹出到根控制器。

    类似:

    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
        [viewController.navigationController popToRootViewControllerAnimated:YES];
    }
    

    上面的代码应该弹出到任何导航控制器的根控制器,它是新选择的选项卡的主视图控制器。您可以尝试在您的应用程序委托中实现该协议。并且不要忘记将应用程序委托实际分配为标签栏控制器的委托。

    【讨论】:

    • 你能说得更具体点吗?我所有的 UINavigationController 都不是程序化的,而是仅在 IB 中。我需要对它们进行子类化吗?
    • 不只是使用 self.navigationController
    • 我在我的答案中添加了一些代码和细节。请注意,我自己没有尝试过,但它应该可以按照这些思路工作。
    【解决方案2】:

    最初对我不起作用,后来我注意到我所有用于不同选项卡的 viecontrollers 实际上都是 UINavigationControllers

    因此我对上面的代码进行了如下修改,它起作用了:

    [(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
    

    【讨论】:

      猜你喜欢
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多