UITabBarController的用法 及使用系统风格Item

UITabBarController是UI中一个非常常用的控件 和UINationController 类似  可以管理多个控制器  完成控制器之间的切换  下面就来谈谈他的用法

首先创建 :UITabBarController *tbc = [[UITabBarController alloc] init];


//设置所管理的视图控制器

    [self setViewControllersFor:tbc];

    //设置tabBar的颜色

    tbc.tabBar.barTintColor = [UIColor whiteColor];

    //设置选中时的颜色

    tbc.tabBar.tintColor = [UIColor greenColor];

    

    //设置代理

    tbc.delegate = self;

    

    //读取以保存的选中下标

    tbc.selectedIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"selectedIndex"];

    

    self.window.rootViewController = tbc;

    [tbc release];

//实现调用方法  使用系统的UITabBarSystemItem:styles

- (void)setViewControllersFor:(UITabBarController *)tbc

{

    //创建可变数组,用于保存所有的视图控制器

    NSMutableArray *controllers = [NSMutableArray array];

    UITabBarSystemItem styles[] = {

        UITabBarSystemItemHistory,

        UITabBarSystemItemBookmarks,

        UITabBarSystemItemSearch,

        UITabBarSystemItemDownloads,

        UITabBarSystemItemFavorites,

        UITabBarSystemItemFeatured,

        UITabBarSystemItemTopRated,

    };

    for (int i=0; i<sizeof(styles)/sizeof(styles[0]); i++) {

        //拼接视图控制器类的类名

        NSString *name = [NSString stringWithFormat:@"ViewController%d", i];

        //将类名字符串转换成Class变量

        Class cls = NSClassFromString(name);

        //创建视图控制器

        BaseViewController *vc = [[cls alloc] init];

        //指定该视图控制器的tabBarItem

        UITabBarItem *tbi = [[UITabBarItem alloc] initWithTabBarSystemItem:styles[i] tag:i];

        vc.tabBarItem = tbi;

        [tbi release];

        //将视图控制器保存到数组中

        [controllers addObject:vc];

        [vc release];

    }

    //设置分栏控制器管理的所有视图控制器

    tbc.viewControllers = controllers;

}


实现代理方法

#pragma mark - 代理方法

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

{

    //获取选中下标

    NSUInteger selectedIndex = tabBarController.selectedIndex;

    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

    //会保存到沙盒目录,一般只保存小数据(状态记录等)

    [ud setInteger:selectedIndex forKey:@"selectedIndex"];

    //上面写不会立即写进入,下面的语句可以立即写入

    [ud synchronize];

    

    //打印沙盒目录

    //NSLog(@"%@", NSHomeDirectory());

}

//下面都是代理方法  属于可选实现的

- (void)tabBarController:(UITabBarController *)tabBarController willBeginCustomizingViewControllers:(NSArray *)viewControllers

{

    NSLog(@"即将开始定制");

}

- (void)tabBarController:(UITabBarController *)tabBarController willEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed

{

    NSLog(@"即将结束定制");

}

- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed

{

    NSLog(@"已经结束定制");

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值