我有一个UITabBarController作为iPad应用程序故事板中的rootViewController。
它包含3个tabBarItems。
每个项目都包含一个navigationController.So总共3个navigationControllers。
情景:
我选择第二个tabBarItem。然后第二个navigationController将在tabBarController上显示,并显示其相关的rootController视图。
我在这个可见的navigationController上推了一些控制器。
现在,当我点击第二个tabBarItem(现在已经选中)时,tabBarController会弹出所有推送的控制器并将navigationController带到它的rootController视图。
问题: 我怎么能阻止这种行为?当用户再次点击它时,选定的tabBarItem不应执行任何操作。
答案 0 :(得分:4)
如果在rootViewController中初始化UITabBarController
,请在rootViewController中添加UITabBarControllerDelegate
,并实现此委托:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
UIViewController* selected = [tabBarController selectedViewController];
if (viewController == selected)
return NO;
else
return YES;
}
答案 1 :(得分:0)
为您的UITabBarController设置委托以达到您想要的任何行为。 ( UITabBarControllerDelegate )
然后实现委托方法
- (id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController
animationControllerForTransitionFromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC{
return self;
}
-(NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext{
return 0.25f;
}
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
self.transitionContext = transitionContext;
//Custom transition method.
[self executePresentationAnimation:transitionContext];
}