【问题标题】:Reset on every navigation controller of my tab bar app在我的标签栏应用程序的每个导航控制器上重置
【发布时间】:2014-01-13 00:14:50
【问题描述】:

我有一个应用程序,它有一个带有四个标签的标签栏控制器。每个选项卡都有一个导航控制器,您可以在其中深入到一定数量的视图控制器。 在特定时间(当我检测到没有连接到互联网时)我需要“重置”每个导航栏,无论当时我在哪个导航栏。 通过选项卡栏代表从一个选项卡更改为另一个选项卡时,我已经看到了有关“重置”的答案。但我没有这样的事件(我需要在任何随机时间进行,当应用程序离线时)。 我在应用委托中尝试过这种方法:

-(void)resetViews{
    UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
    tabController.selectedViewController=[tabController.viewControllers objectAtIndex:0];
    UINavigationController *primero=(UINavigationController *)tabController.selectedViewController;
   [primero popToRootViewControllerAnimated:YES];

   ... 
}

每个选项卡的代码都是相同的,即索引 0、1、2、3。但它不起作用。我究竟做错了什么? 提前致谢, 助教

【问题讨论】:

    标签: ios objective-c uinavigationcontroller uitabbarcontroller reset


    【解决方案1】:
    - (void)resetViews {
        UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
        for(UIViewController *foo in tabBarController.viewControllers) {
            if([foo isKindOfClass:[UINavigationController class]]) {
                UINavigationController *bar = (UINavigationController*)foo;
                [bar popToRootViewControllerAnimated:YES];
            }
        }
    }
    

    未经测试,但应该可以工作。

    tabBarController.viewControllers 是标签栏控制器包含的视图控制器数组。您当前的代码似乎只是重置选定的选项卡,对吗?此代码应重置所有选项卡。

    并且您不需要更改tabBarController.selectedViewController,除非您打算更改选定的选项卡。

    【讨论】:

    • 很好的答案,除了我会重命名循环变量,因为它不是视图。
    • 非常感谢。我只需要进行一些调整即可使其正常工作: UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; for(UIViewController *foo in tabBarController.viewControllers) { if([foo isKindOfClass:[UINavigationController class]]) { UINavigationController *controller=(UINavigationController *)foo; [控制器 popToRootViewControllerAnimated:YES]; } }
    【解决方案2】:

    我应该在已接受的回复下添加评论,但我的声誉太低,无法这样做。

    在我的例子中,为了获取 viewControllers 数组,我不得不改用:

    UITabBarController *tabBarController = (UITabBarController *)self.navigationController.parentViewController;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2020-12-06
      相关资源
      最近更新 更多