代码之家  ›  专栏  ›  技术社区  ›  Mustafa

禁用操作-用户点击选项卡项转到根视图控制器

  •  18
  • Mustafa  · 技术社区  · 15 年前

    我想在用户点击选项卡项时禁用默认操作。

    例如,我有一个带有tab1、tab2和tab3的tabbar。在选项卡1中,用户可以从视图1导航到视图3(视图1>视图2>视图3)。如果用户在视图3,并且点击选项卡1,则应用程序将用户带到视图1(根视图控制器)。我想禁用此功能。我不希望点击选项卡1弹出所有视图控制器。我该怎么做?

    编辑:

    #pragma mark -
    #pragma mark UITabBarControllerDelegate
    
    - (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc {
        UIViewController *tbSelectedController = tbc.selectedViewController;
    
        if ([tbSelectedController isEqual:vc]) {
            return NO;
        }
    
        return YES;
    }
    
    1 回复  |  直到 15 年前
        1
  •  21
  •   Tony Million    15 年前

    如果查看uitabarcontroller委托,有一个方法:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
    

    如果在类中实现了这一点,则可以检查uiviewController是否是已显示的控件,然后返回no,这将阻止此操作的发生。

    我对嵌入在uitabbarController中的abpeoplePicker对象也有同样的问题,第二次按下“contacts”选项卡(已经显示)会使abpeoplePicker控件显示“groups”。