在标签栏应用程序中重置以前的导航控制器

Posted

技术标签:

【中文标题】在标签栏应用程序中重置以前的导航控制器【英文标题】:reset previous navigation controller in tab bar application 【发布时间】:2010-11-26 22:35:31 【问题描述】:

我有一个标签栏应用程序,里面有一个导航控制器和视图控制器。这就是它的布局方式。

Tab Bar 1
- Navigation Controller
-- Root View Controller
-- Other view controller

Tab Bar 2
- Navigation Controller
-- Root View Controller

我想要做的是当我导航到选项卡栏 1 中的其他视图控制器,然后切换到选项卡栏 2,我希望选项卡栏 1 返回其根视图控制器。

我正在寻找的行为类似于 iPod 应用程序。任何帮助表示赞赏。谢谢!

【问题讨论】:

【参考方案1】:

听起来您已经开始使用“选项卡栏应用程序”模板,因此您的应用委托很可能也是您的 UITabBarController 的委托。 UITabBarControllerDelegate 有这个方法:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

在此方法中,您将检查“viewController”是否是您的第一个导航控制器,如果是,请将导航控制器 viewControllers 属性设置为子视图控制器的数组,其中根视图控制器位于索引 0。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

    if (viewController == firstNavController)
        viewController.viewControllers = [NSArray arrayWithObjects:rootViewController, otherViewController, nil];

【讨论】:

以上是关于在标签栏应用程序中重置以前的导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何让所有导航控制器在标签栏中扎根?

导航栏重置其框架

弹出标签栏应用程序上的所有视图控制器

标签栏控制器中的导航控制器

组合标签栏和导航栏控制器出现问题

标签栏和导航控制器应用程序中的状态恢复