Iphone 禁用选项卡栏导航到根视图

Iphone 禁用选项卡栏导航到根视图,iphone,uinavigationcontroller,uitabbarcontroller,Iphone,Uinavigationcontroller,Uitabbarcontroller,我有一个基于选项卡栏的应用程序,在每个选项卡栏项目上都有导航。 当我导航到任何选项卡栏项目上的另一个视图并单击选项卡栏项目时,将调用该选项卡栏项目上的根视图控制器。 就像PopToRootView一样。 我们可以禁用这种情况吗?尽管他们说您不应该子类化UINavigationController,但您可以通过创建UINavigationController的子类并覆盖-(NSArray*)popToRootViewControllerAnimated:(BOOL)动画方法 这样做(不调用超级po

我有一个基于选项卡栏的应用程序,在每个选项卡栏项目上都有导航。 当我导航到任何选项卡栏项目上的另一个视图并单击选项卡栏项目时,将调用该选项卡栏项目上的根视图控制器。 就像PopToRootView一样。
我们可以禁用这种情况吗?

尽管他们说您不应该子类化
UINavigationController
,但您可以通过创建
UINavigationController
的子类并覆盖
-(NSArray*)popToRootViewControllerAnimated:(BOOL)动画方法


这样做(不调用超级popToRootViewController)将防止在单击选项卡栏项目时视图控制器弹出。它可能会以某种方式使您遇到一些问题,但希望它对您有效。

是的,您可以通过在视图控制器上实现
UITabBarControllerDelegate
方法来禁用自动
poptrootviewcontroller

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    if(self.navigationController == viewController) {
        return NO;
    }
    return YES;
}
感谢:

  • 在头文件中包括UITABBARCONTROLLERDEGATE
  • 试试这个:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
      {
          if(bool_youDontWantPopToRootView)
               return (tabBarController.selectedViewController != viewController);
          return YES;
      }
    
  • 对于bool_youDontWantPopToRootView,您可以在希望其行为类似于默认行为时向其添加条件

    -(NSArray*)PoptorootViewController动画化:(BOOL)动画化当您在动画参数中传递“否”时,您将被定向到根视图,而不带任何动画


    当您点击任何选项卡栏时,您不需要使用此方法导航控制器的默认行为是它维护自己的VCs堆栈

    您能告诉我-(NSArray*)PoptorootViewController动画:(BOOL)动画的含义吗;在动画参数中以“否”的形式传递。@mjdth您知道麻烦不是“应用程序被苹果拒绝”吗?否则它就像魅力一样。谢谢你的提示。