我正在使用故事板并且UITabBarViewController
作为我的导航控制器。我需要的是使用shouldSelectViewController
方法,它是委托UITabBarControllerDelegate的一部分。
我不确定如何在CustomUiTabBarController
中覆盖此方法。
我试图定义这样的界面:
@interface CustomTabBarController : UITabBarController <UITabBarControllerDelegate>
然后我实现了这个:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
//nothing yet
}
但是,单击选项卡时,不会执行shouldSelectViewController。我也无法在我的故事板中将CustomTabBarController类设置为TabBar的委托,因为它会导致异常。
我在这里明显泄露了一些iOS不受欢迎的内容。请协助。
答案 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);
}