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(@"已经结束定制");
}