禁用操作 - 用户点击tabbar项目以转到根视图控制器

时间:2010-11-16 05:41:05

标签: iphone uinavigationcontroller uitabbar tabbar target-action

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

例如,我有一个带有Tab1,Tab2和Tab3的标签栏。在Tab1中,用户可以从View1导航到View3(View1> View2> View3)。如果用户在View3,并且他点击Tab1,则应用程序将用户带到View1(根视图控制器)。我想禁用此功能。我不希望在Tab1上点击以弹出所有视图控制器。我怎么能这样做?

修改

这种行为有点奇怪,但是在深层次结构的情况下是一个方便的快捷方式!

您可以实现以下UITabBarControllerDelegate方法来禁用此系统范围的快捷方式:

#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 个答案:

答案 0 :(得分:21)

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

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

如果你在类中实现了这个,你可以检查UIViewController是否已经显示,然后返回NO,这将阻止这种情况发生。

我在UITabBarController中嵌入了ABPeoplePicker对象时遇到了同样的问题,因为第二次按下“Contacts”选项卡会使ABPeoplePicker控件显示“Groups”