标签:
*************HWAppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 1.创建窗口 self.window = [[UIWindow alloc] init]; self.window.frame = [UIScreen mainScreen].bounds; // 2.设置根控制器 self.window.rootViewController = [[HWTabBarViewController alloc] init]; // 4.显示窗口 [self.window makeKeyAndVisible]; return YES; }
*******HWTabBarViewController.m
#import "HWTabBarViewController.h" #import "HWHomeViewController.h" #import "HWMessageCenterViewController.h" #import "HWDiscoverViewController.h" #import "HWProfileViewController.h" #import "HWNavigationController.h" @interface HWTabBarViewController () @end @implementation HWTabBarViewController - (void)viewDidLoad { [super viewDidLoad]; // 1.初始化子控制器 HWHomeViewController *home = [[HWHomeViewController alloc] init]; [self addChildVc:home title:@"首页" image:@"tabbar_home" selectedImage:@"tabbar_home_selected"]; HWMessageCenterViewController *messageCenter = [[HWMessageCenterViewController alloc] init]; [self addChildVc:messageCenter title:@"消息" image:@"tabbar_message_center" selectedImage:@"tabbar_message_center_selected"]; HWDiscoverViewController *discover = [[HWDiscoverViewController alloc] init]; [self addChildVc:discover title:@"发现" image:@"tabbar_discover" selectedImage:@"tabbar_discover_selected"]; HWProfileViewController *profile = [[HWProfileViewController alloc] init]; [self addChildVc:profile title:@"我" image:@"tabbar_profile" selectedImage:@"tabbar_profile_selected"]; } /** * 添加一个子控制器 * * @param childVc 子控制器 * @param title 标题 * @param image 图片 * @param selectedImage 选中的图片 */ - (void)addChildVc:(UIViewController *)childVc title:(NSString *)title image:(NSString *)image selectedImage:(NSString *)selectedImage { // 设置子控制器的文字 childVc.title = title; // 同时设置tabbar和navigationBar的文字 // childVc.tabBarItem.title = title; // 设置tabbar的文字 // childVc.navigationItem.title = title; // 设置navigationBar的文字 // 设置子控制器的图片 childVc.tabBarItem.image = [UIImage imageNamed:image]; childVc.tabBarItem.selectedImage = [[UIImage imageNamed:selectedImage]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; // 设置文字的样式 NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary]; textAttrs[NSForegroundColorAttributeName] = HWColor(123, 123, 123); NSMutableDictionary *selectTextAttrs = [NSMutableDictionary dictionary]; selectTextAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor]; [childVc.tabBarItem setTitleTextAttributes:textAttrs forState:UIControlStateNormal]; [childVc.tabBarItem setTitleTextAttributes:selectTextAttrs forState:UIControlStateSelected]; childVc.view.backgroundColor = HWRandomColor; //设置了 这个会实例化 view // 先给外面传进来的小控制器 包装 一个导航控制器 HWNavigationController *nav = [[HWNavigationController alloc] initWithRootViewController:childVc]; // 添加为子控制器 [self addChildViewController:nav]; } @end
************HWTabBarViewController.h(导航控制器)
#import <UIKit/UIKit.h> @interface HWTabBarViewController : UITabBarController @end
***********HWNavigationController.m
#import "HWNavigationController.h" @interface HWNavigationController () @end @implementation HWNavigationController + (void)initialize { // 设置整个项目所有item的主题样式 UIBarButtonItem *item = [UIBarButtonItem appearance]; // 设置普通状态 // key:NS****AttributeName NSMutableDictionary *textAttrs = [NSMutableDictionary dictionary]; textAttrs[NSForegroundColorAttributeName] = [UIColor orangeColor]; textAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13]; [item setTitleTextAttributes:textAttrs forState:UIControlStateNormal]; // 设置不可用状态 NSMutableDictionary *disableTextAttrs = [NSMutableDictionary dictionary]; disableTextAttrs[NSForegroundColorAttributeName] = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:0.7]; // 每一个像素都有自己的颜色,每一种颜色都可以由RGB3色组成 // 12bit颜色: #f00 #0f0 #00f #ff0 // 24bit颜色: #ff0000 #ffff00 #000000 #ffffff // #ff ff ff // R:255 // G:255 // B:255 // RGBA // 32bit颜色: #556677 // #ff00ff disableTextAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:13]; [item setTitleTextAttributes:disableTextAttrs forState:UIControlStateDisabled]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /** * 重写这个方法目的:能够拦截所有push进来的控制器 * * @param viewController 即将push进来的控制器 */ - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { if (self.viewControllers.count > 0) { // 这时push进来的控制器viewController,不是第一个子控制器(不是根控制器) /* 自动显示和隐藏tabbar */ viewController.hidesBottomBarWhenPushed = YES; /* 设置导航栏上面的内容 */ // 设置左边的返回按钮 viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(back) image:@"navigationbar_back" highImage:@"navigationbar_back_highlighted"]; // 设置右边的更多按钮 viewController.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(more) image:@"navigationbar_more" highImage:@"navigationbar_more_highlighted"]; } [super pushViewController:viewController animated:animated]; } - (void)back { #warning 这里要用self,不是self.navigationController // 因为self本来就是一个导航控制器,self.navigationController这里是nil的 [self popViewControllerAnimated:YES]; } - (void)more //返回到跟控制器 { [self popToRootViewControllerAnimated:YES]; } @end
************HWHomeViewController.m
#import "HWHomeViewController.h" @interface HWHomeViewController () @end @implementation HWHomeViewController - (void)viewDidLoad { [super viewDidLoad]; /* 设置导航栏上面的内容 */ self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(friendSearch) image:@"navigationbar_friendsearch" highImage:@"navigationbar_friendsearch_highlighted"]; self.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(pop) image:@"navigationbar_pop" highImage:@"navigationbar_pop_highlighted"]; } - (void)friendSearch { NSLog(@"friendSearch"); } - (void)pop { NSLog(@"pop"); } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { #warning Potentially incomplete method implementation. // Return the number of sections. return 0; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { #warning Incomplete method implementation. // Return the number of rows in the section. return 0; } @end
HWHomeViewController.h
#import <UIKit/UIKit.h> @interface HWHomeViewController : UITableViewController @end
************HWMessageCenterViewController.m (消息)
#import "HWMessageCenterViewController.h" #import "HWTest1ViewController.h" @interface HWMessageCenterViewController () @end @implementation HWMessageCenterViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // style : 这个参数是用来设置背景的,在iOS7之前效果比较明显, iOS7中没有任何效果 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"写私信" style:UIBarButtonItemStylePlain target:self action:@selector(composeMsg)]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // 这个item不能点击(目前放在viewWillAppear就能显示disable下的主题) self.navigationItem.rightBarButtonItem.enabled = NO; } - (void)composeMsg { NSLog(@"composeMsg"); } #pragma mark - Table view data sourc - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } cell.textLabel.text = [NSString stringWithFormat:@"test-message-%d", indexPath.row]; return cell; } #pragma mark - 代理方法 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { HWTest1ViewController *test1 = [[HWTest1ViewController alloc] init]; test1.title = @"测试1控制器"; // 当test1控制器被push的时候,test1所在的tabbarcontroller的tabbar会自动隐藏 // 当test1控制器被pop的时候,test1所在的tabbarcontroller的tabbar会自动显示 // test1.hidesBottomBarWhenPushed = YES; // self.navigationController === HWNavigationController [self.navigationController pushViewController:test1 animated:YES]; } @end
************HWMessageCenterViewController.h (消息)
#import <UIKit/UIKit.h> @interface HWMessageCenterViewController : UITableViewController @end
**********HWDiscoverViewController.m(发现)
#import "HWDiscoverViewController.h" @interface HWDiscoverViewController () @end @implementation HWDiscoverViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { #warning Potentially incomplete method implementation. // Return the number of sections. return 0; } @end
**********HWDiscoverViewController.h(发现)
#import <UIKit/UIKit.h> @interface HWDiscoverViewController : UITableViewController @end
HWProfileViewController.m(我)
#import "HWProfileViewController.h" #import "HWTest1ViewController.h" @interface HWProfileViewController () @end @implementation HWProfileViewController - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"设置" style:0 target:self action:@selector(setting)]; // self.navigationItem.rightBarButtonItem = [UIBarButtonItem itemWithTarget:self action:@selector(setting) image:@"navigationbar_pop" highImage:@"navigationbar_pop_highlighted"]; } - (void)setting { HWTest1ViewController *test1 = [[HWTest1ViewController alloc] init]; test1.title = @"test1"; [self.navigationController pushViewController:test1 animated:YES]; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { #warning Potentially incomplete method implementation. // Return the number of sections. return 0; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { #warning Incomplete method implementation. // Return the number of rows in the section. return 0; } @end
***************HWProfileViewController.h(我)
#import <UIKit/UIKit.h> @interface HWProfileViewController : UITableViewController @end
标签:
原文地址:http://www.cnblogs.com/ios-g/p/4815870.html