我想在用户点击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;
}
答案 0 :(得分:21)
如果查看UITabBarController委托,则有一个方法:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
如果你在类中实现了这个,你可以检查UIViewController是否已经显示,然后返回NO,这将阻止这种情况发生。
我在UITabBarController中嵌入了ABPeoplePicker对象时遇到了同样的问题,因为第二次按下“Contacts”选项卡会使ABPeoplePicker控件显示“Groups”