UITabBarController的创建与基本属性
1 - (void)customTabbarController{ 2 3 //声明一个UITabBarController 4 UITabBarController * tab = [[UITabBarController alloc]init]; 5 6 //设置tabBar是否透明 7 tab.tabBar.translucent = YES; 8 //设置tabBarController的代理 9 tab.delegate = self; 10 //设置背景图片 11 // tab.tabBar.backgroundImage = [UIImage imageNamed:@""]; 12 13 // tab.tabBar.alpha =1; 14 // tab.tabBar.backgroundColor = 15 // 设置样式 16 // tab.tabBar.barStyle = UIBarStyleDefault; 17 /* 18 typedef NS_ENUM(NSInteger, UIBarStyle) { 19 UIBarStyleDefault = 0, 20 UIBarStyleBlack = 1, 21 22 UIBarStyleBlackOpaque = 1, // Deprecated. Use UIBarStyleBlack 23 UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES 24 } __TVOS_PROHIBITED; 25 */ 26 27 //设置为根视图 28 _window.rootViewController = tab; 29 30 //先声明试图控制器对象 31 FirstViewController * firstVC = [[FirstViewController alloc]init]; 32 //用系统创建tabBar样式 33 // firstVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFeatured tag:1]; 34 35 //使用标题 图片创建tabBar样式 36 firstVC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"首页" image:[UIImage imageNamed:@"tabbar_account"] tag:1]; 37 // [tab addChildViewController:firstVC]; 38 39 //设置提示 可以是中文 可以是数字 字符串 40 firstVC.tabBarItem.badgeValue = @"1"; 41 //将firstVC设置为nav1的根视图 42 UINavigationController * nav1 = [[UINavigationController alloc]initWithRootViewController:firstVC]; 43 44 45 46 SecondViewController * secondVC = [[SecondViewController alloc]init]; 47 // secondVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:2]; 48 secondVC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"钱" image:[[UIImage imageNamed:@"tabbar_appfree"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] tag:2]; 49 // [tab addChildViewController:secondVC]; 50 secondVC.tabBarItem.badgeValue = @"2"; 51 UINavigationController * nav2 = [[UINavigationController alloc]initWithRootViewController:secondVC]; 52 53 54 ThirdViewController * thirdVC = [[ThirdViewController alloc]init]; 55 // thirdVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemContacts tag:3]; 56 thirdVC.tabBarItem = [[UITabBarItem alloc]initWithTitle:@"图表" image:[UIImage imageNamed:@"tabbar_rank@2x"] selectedImage:[UIImage imageNamed:@"tabbar_rank_press@2x"]]; 57 // [tab addChildViewController:thirdVC]; 58 UINavigationController * nav3 = [[UINavigationController alloc]initWithRootViewController:thirdVC]; 59 60 61 FourthViewController * fourthVC = [[FourthViewController alloc]init]; 62 fourthVC.tabBarItem = [[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:4]; 63 // [tab addChildViewController:fourthVC]; 64 fourthVC.tabBarItem.badgeValue = @"3"; 65 // fourthVC.title = @"hhehe"; 66 // fourthVC.navigationItem.prompt = @"ooo"; 67 UINavigationController * nav4 = [[UINavigationController alloc]initWithRootViewController:fourthVC]; 68 69 70 71 //声明一个单例 72 NSUserDefaults * ud = [NSUserDefaults standardUserDefaults]; 73 //找到key为selected的值 74 NSUInteger index = [[ud objectForKey:@"selected"] integerValue]; 75 //设置tabBarController的索引值 (默认页面) 76 tab.selectedIndex = index; 77 78 79 //按数组顺序显示 初始是第一个 80 //把试图控制器添加上去 此处添加的是navigationController 81 tab.viewControllers = @[nav1,nav2,nav3,nav4]; 82 83 // [tab addChildViewController:firstVC]; 84 // 85 86 87 88 //系统样式 89 /* 90 typedef NS_ENUM(NSInteger, UITabBarSystemItem) { 91 UITabBarSystemItemMore, 92 UITabBarSystemItemFavorites, 93 UITabBarSystemItemFeatured, 94 UITabBarSystemItemTopRated, 95 UITabBarSystemItemRecents, 96 UITabBarSystemItemContacts, 97 UITabBarSystemItemHistory, 98 UITabBarSystemItemBookmarks, 99 UITabBarSystemItemSearch, 100 UITabBarSystemItemDownloads, 101 UITabBarSystemItemMostRecent, 102 UITabBarSystemItemMostViewed, 103 }; 104 */ 105 }
再看看 协议UITabBarControllerDelegate中的代理方法
1 //能否选择viewController 2 - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{ 3 //第二个参数为点击的视图控制器 4 5 //获取到tabBarController所有的视图控制器 6 NSArray * array = tabBarController.viewControllers; 7 8 NSUInteger index = [array indexOfObject:viewController]; 9 NSLog(@"%lu",index); 10 11 //声明一个单例 12 NSUserDefaults * ud = [NSUserDefaults standardUserDefaults]; 13 [ud setObject:[NSNumber numberWithInteger:index] forKey:@"selected"]; 14 //写入磁盘 15 [ud synchronize]; 16 17 return YES; 18 } 19 //点击之后 20 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ 21 22 }