给UITarbarController设个delegate,并实现如下方法
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[UINavigationController class]])
{
UINavigationController * nav = (UINavigationController*)viewController;
// 这里是关键,只在栈中存大于一个viewController并且是当前选中的,就不做反应
if (nav.viewControllers.count >1 && tabBarController.selectedViewController == viewController)
{
return NO;
}
}
return YES;
}