3

我在 iPad 应用程序的情节提要中有一个 UITabBarController 作为 rootViewController。

它包含 3 个 tabBarItems。

每个项目都有一个navigationController。所以总共3个navigationController。

设想:

  1. 我选择了第二个 tabBarItem。然后第二个 navigationController 将在 tabBarController 上可见,并带有其关联的 rootController 的视图。

  2. 我在这个可见的导航控制器上推送了一些控制器。

  3. 现在,当我点击第二个 tabBarItem(现在已经被选中)时,tabBarController 会弹出所有推送的控制器并将 navigationController 带到它的 rootController 视图。

问题:我怎样才能阻止这种行为?当用户再次点击它时,选定的 tabBarItem 不应执行任何操作。

4

2 回答 2

4

如果你UITabBarController在 rootViewController 中初始化添加UITabBarControllerDelegaterootViewController,并实现这个委托:

- (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;
}
于 2013-11-01T17:50:29.383 回答
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];
}

参考:https ://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarControllerDelegate_Protocol/Reference/Reference.html

于 2013-11-01T17:56:23.013 回答