关于分栏控制器问题
2015-07-03 09:22
302 查看
1、分栏控制器基本概念
·UITabBarController的基本概念
·UITabBarController和UINavigationController一样是用来管理视图控制器的。
·UINavigationController是用来管理视图控制器之间的导航,UITabBarController
是管理固定的几个视图控制器,子控制器是并列的。可以任意切换显示。
·很多应用程序都使用UITabBarController来做整体的布局。
分栏控制器的基本样式
·UITabBarController初始化
[objc] view
plaincopy
UIViewController *viewCtrl1 = [[UIViewController alloc] init];
viewCtrl1.title = @"主页";
UIViewController *viewCtrl2 = [[UIViewController alloc] init];
viewCtrl2.view.backgroundColor = [UIColor redColor];
viewCtrl2.title = @"消息";
UIViewController *viewCtrl3 = [[UIViewController alloc] init];
viewCtrl3.view.backgroundColor = [UIColor grayColor];
viewCtrl3.title = @"搜索";
UIViewController *viewCtrl4 = [[UIViewController alloc] init];
viewCtrl4.view.backgroundColor = [UIColor brownColor];
viewCtrl4.title = @"设置";
NSArray *viewControllers = [NSArray arrayWithObjects:viewCtrl1,viewCtrl2,
viewCtrl3,viewCtrl4, nil nil];
UITabBarController *mainViewController = [[UITabBarController alloc] init];
mainViewController.viewControllers = viewControllers;
[self.window setRootViewController:mainViewController];
2、分栏视图控制器的结构
·UITabBarController结构图
与导航控制器不同,Tab控制器是用数组管理子视图控制器,并且子视图之间是 平等关系。导航控制器所管理的视图控制器之间的上下级关系。
·TabBarController类图分析
·一个分栏视图控制器控制着若干 视图控制器,它是由它的一个数组 进行管理的
·每一个分栏控制器只有一个 UITabBar视图,用于显示 UITabItem实例
·UITabBarItem由当前的视图控 制器管理,这一点与导航控制器中 的UIBarButtonItem是相同
创建系统自带的分栏控制器样式
·UITabBarController系统样式
TabBar只能显示5个Tab Item,如果超过5个则会自动生成个More的标签显示剩 余的Tab, 这些Tab可以通过编辑显示在UITabBar上。如果将视图添加到导航控制 器中,默认出现编辑按钮,可以自由移动item实例。
实例代码
·创建系统自带的TabBarController(TabBarItem)
[objc] view
plaincopy
/*
*1、初始化我们需要在tabBarController中显示的视图控制器 * 2、初始化UItabBarItem
* 3、在子视图控制器中添加UItabBarItem
* 4、我们将子视图控制器放入数组中
* 5、初始化tabBarcontroller
* 6、将数组放入tabBar控制器中,方法viewControllers
*/
TabBarViewController *tabBarController = [[TabBarViewController alloc] init];
FirstViewController *firstVC = [[FirstViewController alloc] init];
UITabBarItem *firstItem = [[UITabBarItem alloc]
initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1];
firstViewController.tabBarItem = firstItem;
[firstItem release];
// ......
NSArray *viewControllers = @[firstVC, secondVC, thirdVC];
[tabBarController setViewControllers:viewControllers animated:YES];
self.window.rootViewController = tabBarController;
[tabBarController release];
用户自定义分栏视图控制器样式
·自定义UITabBarItem
·图片大小30*30px(视网膜屏幕,60*60) ·图片需使用淡灰色或者半透明效果  ,选中时系统自动填充颜色(蓝色)
[objc] view
plaincopy
FirstViewController *firstVC = [[FirstViewController alloc] init];
UITabBarItem *firstItem = [[UITabBarItem alloc] initWithTitle:@"主页" image:
[UIImage imageNamed:@"image.png"] tag:1];
firstVC.tabBarItem = firstItem;
[firstItem release];
3、设置分栏控制器代理
·设置UITabBarController代理
·通过实现tabBarController的代理方法,可以监听视图控制器的切换
[objc] view
plaincopy
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController
*)viewController
{
// 视图将要切换时调用, viewController为将要显示的控制器
}
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
// 视图已经切换后调用, viewController 是已经显示的控制器
}
4、集成分栏控制器和导航控制器
·集成导航控制器和分栏控制器
·两种控制器的集成方式有两种选择
·在Tab Bar控制器中某一个Tab中使用Navigation控制器,这是最常见的用法,我们将在下***体讲解这个用法
·在一个Navigation控制器控制下的某一个或某些控制器是Tab Bar控制器,这时 对该Tab Bar控制器的压入和弹出方法和普通视图控制器一样
·第一种集成方式
·根视图控制器是 UITabBarController,它有若 干个子视图控制器,注意他们 是平级的关系
·其中有一个是导航控制器, 导航控制器有控制着若干个子 视图控制器,他们是上、下级 的关系,如右图所示
集成后的结构图
·实现代码
[objc] view
plaincopy
FirstViewController *firstVC = [[[FirstViewController alloc] init] autorelease];
// 将第⼀一个视图控制器作为导航控制器根视图
UINavigationController *fNav = [[[UINavigationController alloc] initWithRootViewController: firstVC] autorelease];
TwoViewController *secondVC = [[[TwoViewController alloc] init] autorelease]; // 将第二个视图控制器作为导航控制器根视图
UINavigationController *tNav = [[[UINavigationController alloc]
initWithRootViewController: secondVC] autorelease];
// ......
NSArray *viewControllers = [NSArray arrayWithObjects:fNav,tNav,tNav, nil nil];
UITabBarController *tabController = [[UITabBarController alloc] init];
tabController.viewControllers = viewControllers;
self.window.rootViewController = tabController;
[tabController release];
5、UITABBAR视图的组成
·UITabBar视图的组成
·是的用来控制一组控制器的切换,类似选项卡。
·每个Tab控制一个视图控制器,点击哪个tab就显示对应的视图控制器(当前的视图控制器)
·每个Tab是个UITabBarItem对象,通过子控制器self.tabBarItem 可以访问到该 UITabBarItem对象。(这一点与谁相似呢?)
·通过视图控制器的self.title设置Tab上的标题。
·修改UITabBar的tintColor属性定义背景颜色。
用户定制TABBAR(一)
·第一种定制TabBar视图
·每个Tab是UITabBarItem对象,所以通过定义UITabBarItem对象来定制。
[objc] view
plaincopy
// 可以自定义title、图片
- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag: (NSInteger)tag;
// 使用系统内置的tab
- (id)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem tag:(NSInteger)tag; // 代码实现
UITabBarItem *tabItem1 = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:101];
UITabBarItem *tabItem2 = [[UITabBarItem alloc] initWithTitle:@"收藏夹" image:[UIImage imageNamed:@"top.png"] tag:100];
UITABBAR其他常用设置
·UITabBarItem 可以设置badgeValue属性显示红色图标标记,如下图
·我们的程序也可以设置这样的“小标记”
用户定制TABBAR(二)
·第二种定制UITabBar方式
·第二种定制UITabBar定制方式比较灵活,非常常用,需要重点掌握
·隐藏UITabBarController的UITabBar,然后创建一个View视图代替UITabBar,在此view上添加UIButton代替Tab标签。
·iOS5.x提供了新方法用于定制用户自己的UITabBar
[objc] view
plaincopy
// 定制UITabBar背景图片
@property(nonatomic,retain) UIImage *backgroundImage;
// 定制选中图片
@property(nonatomic,retain) UIImage *selectionIndicatorImage;
·UITabBarController的基本概念
·UITabBarController和UINavigationController一样是用来管理视图控制器的。
·UINavigationController是用来管理视图控制器之间的导航,UITabBarController
是管理固定的几个视图控制器,子控制器是并列的。可以任意切换显示。
·很多应用程序都使用UITabBarController来做整体的布局。
分栏控制器的基本样式
·UITabBarController初始化
[objc] view
plaincopy
UIViewController *viewCtrl1 = [[UIViewController alloc] init];
viewCtrl1.title = @"主页";
UIViewController *viewCtrl2 = [[UIViewController alloc] init];
viewCtrl2.view.backgroundColor = [UIColor redColor];
viewCtrl2.title = @"消息";
UIViewController *viewCtrl3 = [[UIViewController alloc] init];
viewCtrl3.view.backgroundColor = [UIColor grayColor];
viewCtrl3.title = @"搜索";
UIViewController *viewCtrl4 = [[UIViewController alloc] init];
viewCtrl4.view.backgroundColor = [UIColor brownColor];
viewCtrl4.title = @"设置";
NSArray *viewControllers = [NSArray arrayWithObjects:viewCtrl1,viewCtrl2,
viewCtrl3,viewCtrl4, nil nil];
UITabBarController *mainViewController = [[UITabBarController alloc] init];
mainViewController.viewControllers = viewControllers;
[self.window setRootViewController:mainViewController];
2、分栏视图控制器的结构
·UITabBarController结构图
与导航控制器不同,Tab控制器是用数组管理子视图控制器,并且子视图之间是 平等关系。导航控制器所管理的视图控制器之间的上下级关系。
·TabBarController类图分析
·一个分栏视图控制器控制着若干 视图控制器,它是由它的一个数组 进行管理的
·每一个分栏控制器只有一个 UITabBar视图,用于显示 UITabItem实例
·UITabBarItem由当前的视图控 制器管理,这一点与导航控制器中 的UIBarButtonItem是相同
创建系统自带的分栏控制器样式
·UITabBarController系统样式
TabBar只能显示5个Tab Item,如果超过5个则会自动生成个More的标签显示剩 余的Tab, 这些Tab可以通过编辑显示在UITabBar上。如果将视图添加到导航控制 器中,默认出现编辑按钮,可以自由移动item实例。
实例代码
·创建系统自带的TabBarController(TabBarItem)
[objc] view
plaincopy
/*
*1、初始化我们需要在tabBarController中显示的视图控制器 * 2、初始化UItabBarItem
* 3、在子视图控制器中添加UItabBarItem
* 4、我们将子视图控制器放入数组中
* 5、初始化tabBarcontroller
* 6、将数组放入tabBar控制器中,方法viewControllers
*/
TabBarViewController *tabBarController = [[TabBarViewController alloc] init];
FirstViewController *firstVC = [[FirstViewController alloc] init];
UITabBarItem *firstItem = [[UITabBarItem alloc]
initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1];
firstViewController.tabBarItem = firstItem;
[firstItem release];
// ......
NSArray *viewControllers = @[firstVC, secondVC, thirdVC];
[tabBarController setViewControllers:viewControllers animated:YES];
self.window.rootViewController = tabBarController;
[tabBarController release];
用户自定义分栏视图控制器样式
·自定义UITabBarItem
·图片大小30*30px(视网膜屏幕,60*60) ·图片需使用淡灰色或者半透明效果  ,选中时系统自动填充颜色(蓝色)
[objc] view
plaincopy
FirstViewController *firstVC = [[FirstViewController alloc] init];
UITabBarItem *firstItem = [[UITabBarItem alloc] initWithTitle:@"主页" image:
[UIImage imageNamed:@"image.png"] tag:1];
firstVC.tabBarItem = firstItem;
[firstItem release];
3、设置分栏控制器代理
·设置UITabBarController代理
·通过实现tabBarController的代理方法,可以监听视图控制器的切换
[objc] view
plaincopy
- (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController
*)viewController
{
// 视图将要切换时调用, viewController为将要显示的控制器
}
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
// 视图已经切换后调用, viewController 是已经显示的控制器
}
4、集成分栏控制器和导航控制器
·集成导航控制器和分栏控制器
·两种控制器的集成方式有两种选择
·在Tab Bar控制器中某一个Tab中使用Navigation控制器,这是最常见的用法,我们将在下***体讲解这个用法
·在一个Navigation控制器控制下的某一个或某些控制器是Tab Bar控制器,这时 对该Tab Bar控制器的压入和弹出方法和普通视图控制器一样
·第一种集成方式
·根视图控制器是 UITabBarController,它有若 干个子视图控制器,注意他们 是平级的关系
·其中有一个是导航控制器, 导航控制器有控制着若干个子 视图控制器,他们是上、下级 的关系,如右图所示
集成后的结构图
·实现代码
[objc] view
plaincopy
FirstViewController *firstVC = [[[FirstViewController alloc] init] autorelease];
// 将第⼀一个视图控制器作为导航控制器根视图
UINavigationController *fNav = [[[UINavigationController alloc] initWithRootViewController: firstVC] autorelease];
TwoViewController *secondVC = [[[TwoViewController alloc] init] autorelease]; // 将第二个视图控制器作为导航控制器根视图
UINavigationController *tNav = [[[UINavigationController alloc]
initWithRootViewController: secondVC] autorelease];
// ......
NSArray *viewControllers = [NSArray arrayWithObjects:fNav,tNav,tNav, nil nil];
UITabBarController *tabController = [[UITabBarController alloc] init];
tabController.viewControllers = viewControllers;
self.window.rootViewController = tabController;
[tabController release];
5、UITABBAR视图的组成
·UITabBar视图的组成
·是的用来控制一组控制器的切换,类似选项卡。
·每个Tab控制一个视图控制器,点击哪个tab就显示对应的视图控制器(当前的视图控制器)
·每个Tab是个UITabBarItem对象,通过子控制器self.tabBarItem 可以访问到该 UITabBarItem对象。(这一点与谁相似呢?)
·通过视图控制器的self.title设置Tab上的标题。
·修改UITabBar的tintColor属性定义背景颜色。
用户定制TABBAR(一)
·第一种定制TabBar视图
·每个Tab是UITabBarItem对象,所以通过定义UITabBarItem对象来定制。
[objc] view
plaincopy
// 可以自定义title、图片
- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag: (NSInteger)tag;
// 使用系统内置的tab
- (id)initWithTabBarSystemItem:(UITabBarSystemItem)systemItem tag:(NSInteger)tag; // 代码实现
UITabBarItem *tabItem1 = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:101];
UITabBarItem *tabItem2 = [[UITabBarItem alloc] initWithTitle:@"收藏夹" image:[UIImage imageNamed:@"top.png"] tag:100];
UITABBAR其他常用设置
·UITabBarItem 可以设置badgeValue属性显示红色图标标记,如下图
·我们的程序也可以设置这样的“小标记”
用户定制TABBAR(二)
·第二种定制UITabBar方式
·第二种定制UITabBar定制方式比较灵活,非常常用,需要重点掌握
·隐藏UITabBarController的UITabBar,然后创建一个View视图代替UITabBar,在此view上添加UIButton代替Tab标签。
·iOS5.x提供了新方法用于定制用户自己的UITabBar
[objc] view
plaincopy
// 定制UITabBar背景图片
@property(nonatomic,retain) UIImage *backgroundImage;
// 定制选中图片
@property(nonatomic,retain) UIImage *selectionIndicatorImage;
相关文章推荐
- #LINUX#通过编译链接,却运行时找不到.so文件
- Unity ----- 对象池GameObjectPool
- 数据库范式和规范化
- python列出目录下指定文件与子目录的方法
- edittext禁止android软键盘弹出
- 利用Opencv将图片转为视频
- merge-two-sorted-lists
- 学习指南针
- Ping
- ftp
- 欢迎使用CSDN-markdown编辑器
- ubuntu 查看文件所属的包
- oc实现快速排序
- 我的第一篇博客
- Window-document-javascript
- 游标cursor
- 第四章节-Spring MVC介绍(注解方式——二)
- 图片浏览
- java乱码分析解决
- SQL: EXISTS