【IOS 开发学习总结-OC-58】★UI控件——UITabBar 与UITabBarController

来源:互联网 发布:淘宝怎么批量发布宝贝 编辑:程序博客网 时间:2024/06/10 19:56

【IOS 开发学习总结-OC-58】UI控件——UITabBar 与UITabBarController

UITabBarController会在屏幕底部提供一个UITabBar(这是自带的),随着用户对不同标签的点击,应用呈现不同的内容。
一般的说,UITabBarController管理多个控制器比较合适也比较方便。

UITabBar——标签栏

UITabBar可以单独使用。IB 界面或者代码添加。
IB 界面中该控件的属性:

这里写图片描述

UITabBarItem

UITabBarItem代表一个标签项。可以通过方法创建,也可在 IB界面创建。 badgeValue——可用来设置徽标。如下图,红色的数字。
这里写图片描述

如何监听用户单击了那个标签项

需要为UITabBar设置一个delegate 属性值即可(实现UITabBarDelegate协议的对象)。
当用户选中某个标签项时,会激发 UITabBarDelegate 协议中的-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;方法。

使用UITabBar的步骤

创建一个UITabBar对象——》创建多个UITabBarItem对象,并将他们设置给UITabBar——》为UITabBar对象设置一个UITabBarDelegate对象,用于检测用户的选中事件。

示例:
这里写图片描述
实现代码:
.h文件:

#import <UIKit/UIKit.h>@interface FKViewController : UIViewController <UITabBarDelegate>@end

.m文件:

#import "FKViewController.h"@interface FKViewController ()@end@implementation FKViewController- (void)viewDidLoad{    [super viewDidLoad];    // 创建UITabBar对象    UITabBar* tabBar = [[UITabBar alloc] initWithFrame:        CGRectMake(0 ,440 ,320,40)];    tabBar.delegate = self;    // 将tabBar添加到标签条中    [self.view addSubview:tabBar];    // 使用系统图标创建标签项    UITabBarItem* tabItem1 = [[UITabBarItem alloc]        initWithTabBarSystemItem:UITabBarSystemItemHistory tag:0];    // 使用用户图标创建标签项      UITabBarItem* tabItem2 = [[UITabBarItem alloc]        initWithTitle:@"疯狂软件"        image: [UIImage imageNamed:@"fkit.png"] tag:1];    tabItem2.badgeValue = @"热";    // 使用用户图标创建标签项    UITabBarItem* tabItem3 = [[UITabBarItem alloc]        initWithTitle:@"用户信息"        image: [UIImage imageNamed:@"user.gif"] tag:2];    // 为UITabBar设置多个标签项    tabBar.items = [NSArray        arrayWithObjects:tabItem1, tabItem2 , tabItem3, nil];}// 由UITabBarDelegate定义的方法,当用户选中某个标签项时激发该方法。- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{    NSString* msg = [NSString stringWithFormat:@"您选中第【%d】项"        , item.tag];    // 创建、并显示一个UIAlertView控件    UIAlertView* alert = [[UIAlertView alloc]        initWithTitle:@"提示"        message:msg        delegate:nil        cancelButtonTitle:@"OK"        otherButtonTitles: nil];    [alert show];}@end

UITabBarController——标签栏控制器

通常都是使用UITabBarController管理多个视图控制器。
这里写图片描述
UITabBarController包含的各 UI 控件。
这里写图片描述

使用UITabBarController的步骤:
1. 创建UITabBarController——通常作为程序窗口的根控制器;
2. 依次创建多个 UIViewController 子类的实例。
3. 将多个UIViewController 子类的实例组合成 NSArray 对象,并将这个NSArray 对象设置成UITabBarController的 viewControllers 属性。
4. 重写UIViewController 子类的 init 或 initWithXXX 方法——在这里面设置 tabItem 属性,设为UITabBarItem 对象——标签页对应的标签项。

示例程序代码片:

-(id)initWithNibName:(NSString *)nibNameOrNil    bundle:(NSBundle *)nibBundleOrNil{    if ([super initWithNibName:nibNameOrNil bundle:nibBundleOrNil] != nil)    {        // 为该控制器设置标签项        self.tabBarItem = [[UITabBarItem alloc]            initWithTitle:@"作者信息"            image:[UIImage imageNamed:@"user.gif"] tag:2];    }    return self;}
- (id)initWithStyle:(UITableViewStyle)style{    if ([super initWithStyle:style] != nil) {        UITabBarItem* item = [[UITabBarItem alloc]            initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:1];        // 为标签项设置徽标        item.badgeValue = @"热";        // 为该控制器设置标签项        self.tabBarItem = item;    }    return self;}
- (BOOL)application:(UIApplication *)application    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // 创建程序窗口    self.window = [[UIWindow alloc] initWithFrame:        [[UIScreen mainScreen] bounds]];    // 创建UITabBarController    self.tabBarController = [[UITabBarController alloc] init];    // 创建FKViewController对象    FKViewController* viewController = [[FKViewController alloc]        initWithNibName:@"FKViewController" bundle:nil];    // 创建FKBookListController对象    FKBookListController* bookListController = [[FKBookListController alloc]        initWithStyle:UITableViewStyleGrouped];    // 为UITabBarController设置多个视图控制器    // 如果希望UITabBarController显示几个Tab页,    // 就为UITabBarController添加几个视图控制器    self.tabBarController.viewControllers = [NSArray        arrayWithObjects:bookListController        , viewController, nil];    // 将UITabBarController设置为窗口的根控制器    self.window.rootViewController = self.tabBarController;    [self.window makeKeyAndVisible];    return YES;}
0 0
原创粉丝点击