zoukankan      html  css  js  c++  java
  • iOS开篇——UI之UITabBarController

    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 }
  • 相关阅读:
    iOS:Core Data 中的简单ORM
    Win8:Snap 实现
    js: 删除node的所有child
    WinJS:Listview item 设置背景透明
    iOS: 消息通信中的Notification&KVO
    win8: 清除iframe的缓存
    What's New in iOS7,iOS7新特性介绍
    "Entity Framework数据插入性能追踪"读后总结
    夜,思考——我想要的到底是什么?
    【查询】—Entity Framework实例详解
  • 原文地址:https://www.cnblogs.com/gwkiOS/p/5005769.html
Copyright © 2011-2022 走看看