在UiTabBarViewController中实现shouldSelectViewController方法

时间:2013-06-20 12:09:57

标签: ios uitabbarcontroller

我正在使用故事板并且UITabBarViewController作为我的导航控制器。我需要的是使用shouldSelectViewController方法,它是委托UITabBarControllerDelegate的一部分。

我不确定如何在CustomUiTabBarController中覆盖此方法。

我试图定义这样的界面:

@interface CustomTabBarController : UITabBarController <UITabBarControllerDelegate>

然后我实现了这个:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
//nothing yet
}

但是,单击选项卡时,不会执行shouldSelectViewController。我也无法在我的故事板中将CustomTabBarController类设置为TabBar的委托,因为它会导致异常。

我在这里明显泄露了一些iOS不受欢迎的内容。请协助。

1 个答案:

答案 0 :(得分:2)

首先,从应用程序的视图控制器流中获取UITabbarController的对象。然后在appDelegate中创建一个tabbarcontroller的属性,并将其赋值为

if([viewController isKindOfClass:[UITabBarController class]]){
            UITabBarController *objTabbarController = (UITabBarController *) viewController;
            self.objTabbarController = objTabbarController;
            self.objTabbarController.delegate = self;
        }

将委托分配给它,

@interface AppDelegate : UIResponder <UIApplicationDelegate,UITabBarDelegate>

并在AppDelegate.m文件中实现该方法

shouldSelectViewController return YES;

并在

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"tab selected index %d",tabBarController.selectedIndex);
}