让UITabBar忘记最后的状态

时间:2013-01-31 09:34:12

标签: iphone ios cocoa uinavigationcontroller uitabbarcontroller

如果将UINavigationController集成到UITabBarController的其中一个标签中,则UITabBarController会记住用户上次使用该标签的位置。是否有可能让UITabBarController忘记并始终启动选项卡,就像它是第一次一样?

f.e。 结构如下

  • TAB1
    • 视图1
    • View2
  • TAB2
    • 视图1

用户从Tab1 / View1开始,然后导航到Tab1 / View2。他更改为Tab2 / View1,然后按Tab1:

  • 当前行为:他出现在Tab1 / View2
  • 通缉行为:他出现在Tab1 / View1

2 个答案:

答案 0 :(得分:3)

尝试以下它会帮助你

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    for(int i = 0; i < tabBarController.viewControllers.count; i++) {
        if(tabBarController.selectedIndex != i && [[tabBarController.viewControllers objectAtIndex:i] isKindOfClass:[UINavigationController class]])
            [[tabBarController.viewControllers objectAtIndex:i] popToRootViewControllerAnimated:NO];
    }
}

答案 1 :(得分:1)

查看UITabBar delegate protocole

然后以这种方式使用tabBarController:didSelectViewController:

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

    if (viewController != tabBarItem1) {
        [self.navigationControllerInTab1 popToRootViewControllerAnimated:NO];
    }
}

这样,当您离开第一个标签项时,它会将NavigationController弹出到rootViewController