使用UITabBarController创建Tabbar获取tabBarItem的点击方法
项目中有涉及到拨号键盘的弹出,想要在点击控制器的时候键盘回收,再点击下面的Tabbar实现键盘出现.由于正常情况下,当在当前界面的时候,点击下面的tabbar是不再相应的.这里就需要找到能执行tabbar点击事件的代理方法.
第一步:需要在主控制器执行代理UITabBarControllerDelegate;
第二步:执行代理方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController.
这样的话即使是一直在此界面,点击对应的tabbar也会走这一步,可以在此方法写自己想要执行的操作.
举例代码如下:
第一步:设置代理:
@interface RootViewController ()<UITabBarControllerDelegate>
第二步:设置UITabBarController.
1 ViewController1 *hosterVC = [[ViewController1 alloc]init]; 2 UINavigationController *hosterNC = [[UINavigationController alloc]initWithRootViewController:hosterVC]; 3 hosterNC.navigationBar.translucent = NO; 4 5 6 ViewController2 *menuListVC = [[ViewController2 alloc]init]; 7 UINavigationController *menuListNC = [[UINavigationController alloc]initWithRootViewController:menuListVC]; 8 menuListNC.navigationBar.translucent = NO; 9 10 ViewController3 *healthMainVC = [[ViewController3 alloc]init]; 11 UINavigationController *healthMainNC = [[UINavigationController alloc]initWithRootViewController:healthMainVC]; 12 healthMainNC.navigationBar.translucent = NO; 13 14 ViewController4 *zhiShiVC = [[ViewController4 alloc]init]; 15 UINavigationController *zhiShiNC = [[UINavigationController alloc]initWithRootViewController:zhiShiVC]; 16 zhiShiNC.navigationBar.translucent = NO; 17 18 ViewController5 *sanCanVC = [[ViewController5 alloc]init]; 19 UINavigationController *sanCanNC = [[UINavigationController alloc]initWithRootViewController:sanCanVC]; 20 sanCanNC.navigationBar.translucent = NO; 21 22 UITabBarController *rootVC = [[UITabBarController alloc]init]; 23 rootVC.viewControllers = @[menuListNC,healthMainNC,hosterNC,zhiShiNC,sanCanNC]; 24 25 UITabBarItem *item1 = [[UITabBarItem alloc]initWithTitle:@"菜单" image:[UIImage imageNamed:@"11@2x.png.png"] tag:101]; 26 UITabBarItem *item2 = [[UITabBarItem alloc]initWithTitle:@"养生" image:[UIImage imageNamed:@"12@2x.png.png"] tag:102]; 27 UITabBarItem *item3 = [[UITabBarItem alloc]initWithTitle:@"我的" image:[UIImage imageNamed:@"iconfont-wode-4.png"] tag:103]; 28 UITabBarItem *item4 = [[UITabBarItem alloc]initWithTitle:@"知识" image:[UIImage imageNamed:@"13@2x.png.png"] tag:104]; 29 UITabBarItem *item5 = [[UITabBarItem alloc]initWithTitle:@"三餐" image:[UIImage imageNamed:@"14@2x.png.png"] tag:105]; 30 menuListNC.tabBarItem = item1; 31 healthMainNC.tabBarItem = item2; 32 hosterNC.tabBarItem = item3; 33 zhiShiNC.tabBarItem = item4; 34 sanCanNC.tabBarItem = item5; 35 36 self.window.rootViewController = rootVC;
第三步:执行代理方法:
1 #pragma mark -- UITabBarDelegate 2 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 3 { 4 5 if (tabBarController == self.tabbar) 6 { 7 8 if ([viewController.tabBarItem.title isEqualToString:@"菜单"]) 9 { 10 NSLog(@"执行你想要点击此tabBarItem执行的操作"); 11 12 } 13 } 14 }
转载请注明出处.