ios 导航控制器
1.在AppDelegate.m中
引用
#import "RootViewController.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
#pragma mark - 配置window
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
#pragma mark - 配置根控制器
RootViewController *rootVC = [[RootViewController alloc] init];
// 配置导航控制器
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:rootVC];
// 配置导航栏
// 1. 设置标题
rootVC.title = @"导航栏";
// 2. 设置颜色
// 2.1 设置主色调
nav.navigationBar.tintColor = [UIColor purpleColor];
// 2.2 设置bar色调
nav.navigationBar.barTintColor = [UIColor redColor];
// 3. 设置背景图片
[nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg_ios7"] forBarMetrics:UIBarMetricsDefault];
// 4. 设置标题文本属性
// 4.1 设置阴影
NSShadow *shadow = [[NSShadow alloc] init];
shadow.shadowOffset = CGSizeMake(10, 10);
// 4.2 设置字典
NSDictionary *attributes = @{NSFontAttributeName: [UIFont systemFontOfSize:25], NSForegroundColorAttributeName: [UIColor blueColor], NSShadowAttributeName: shadow};
// 4.3 进行关联
nav.navigationBar.titleTextAttributes = attributes;
self.window.rootViewController = nav;
return YES;
}
2.在RootViewController.m中
//
// ViewController.m
// UI_Lesson4-导航控制器
//
// Created by archerzz on 15/8/17.
// Copyright (c) 2015年 archerzz. All rights reserved.
//
#import "RootViewController.h"
#define BUTTON_ITEM_TAG 100
typedef NS_ENUM(NSInteger, ButtonItem) {
ZHButtonItemRefresh,
ZHButtonItemShare,
ZHButtonItemBackToRoot,
ZHButtonItemNext
};
@interface RootViewController ()
- (void)initUserInterface;
@end
@implementation RootViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self initUserInterface];
}
- (void)initUserInterface {
self.title = @"推送导航";
// 配置随机背景
CGFloat red = arc4random() % 255 / 255.0;
CGFloat blue = arc4random() % 255 / 255.0;
CGFloat green = arc4random() % 255 / 255.0;
self.view.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1];
// 1. 创建一个导航按钮
UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(handleBarEvent:)];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"分享" style:UIBarButtonItemStylePlain target:self action:@selector(handleBarEvent:)];
// 设置tag值
refreshItem.tag = BUTTON_ITEM_TAG + ZHButtonItemRefresh;
item.tag = BUTTON_ITEM_TAG + ZHButtonItemShare;
// 2. 进行关联
self.navigationItem.rightBarButtonItems = @[refreshItem, item];
#pragma mark - 工具栏
// 1. 关闭隐藏
self.navigationController.toolbarHidden = NO;
// 2. 创建按钮
UIBarButtonItem *backToRootItem = [[UIBarButtonItem alloc] initWithTitle:@"backToRoot" style:UIBarButtonItemStylePlain target:self action:@selector(handleBarEvent:)];
UIBarButtonItem *nextItem = [[UIBarButtonItem alloc] initWithTitle:@"next" style:UIBarButtonItemStylePlain target:self action:@selector(handleBarEvent:)];
// 2.1 创建弹性按钮
UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
// 3. 关联按钮
self.toolbarItems = @[flexibleItem, backToRootItem, flexibleItem, nextItem, flexibleItem];
backToRootItem.tag = BUTTON_ITEM_TAG + ZHButtonItemBackToRoot;
nextItem.tag = BUTTON_ITEM_TAG + ZHButtonItemNext;
#pragma mark - 配置返回按钮
self.navigationController.navigationBar.backIndicatorImage = [UIImage imageNamed:@"back_btn"];
self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [UIImage imageNamed:@"back_btn"];
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backItem;
}
- (void)handleBarEvent:(UIBarButtonItem *)sender {
NSLog(@"%s", __func__);
if (sender.tag == 100) {
NSLog(@"刷新");
} else {
NSLog(@"分享");
}
ZHButtonItem index = sender.tag - BUTTON_ITEM_TAG;
switch (index) {
case ZHButtonItemRefresh:
NSLog(@"刷新");
break;
case ZHButtonItemShare:
NSLog(@"分享");
break;
case ZHButtonItemNext:
[self next];
break;
case ZHButtonItemBackToRoot:
[self backToRoot];
break;
default:
break;
}
}
- (void)next {
// 1. 创建对象
RootViewController *rootVC = [[RootViewController alloc] init];
NSLog(@"self = %@, roovc = %@", self, rootVC);
// 2. 导航推送
[self.navigationController pushViewController:rootVC animated:YES];
}
- (void)backToRoot {
[self.navigationController popToRootViewControllerAnimated:YES];
}
@end