UINavigationBar是一个导航条,通常位于屏幕顶端,通常作为多个UINavigationItem的容器,以Stack的形式来管理多个UINavigationItem,每次在导航条上只能看到一个UINavigationItem对象。
ViewController.m
//
// ViewController.m
// UINavigationBarDemo
//
// Created by Apple on 16/5/26.
// Copyright © 2016年 Apple. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
// 记录当前是添加第几个UINavigationItem的计数器
NSInteger count;
UINavigationBar *navigationBar;
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
count = 1;
// 创建一个导航栏
navigationBar = [[UINavigationBar alloc]
initWithFrame:CGRectMake(10, 20, self.view.frame.size.width-20, 44)];
// 把导航栏添加到视图中
[self.view addSubview:navigationBar];
// 调用push方法添加一个UINavigationItem
[self push];
}
-(void)push
{
// 把导航栏集合添加入导航栏中,设置动画打开
[navigationBar pushNavigationItem:
[self makeNavItem] animated:YES];
count++;
}
-(void)pop
{
count--;
// 弹出最顶层的UINavigationItem
[navigationBar popNavigationItemAnimated:YES];
}
- (UINavigationItem*) makeNavItem
{
// 创建一个导航项
UINavigationItem *navigationItem = [[UINavigationItem alloc]
initWithTitle:nil];
//设置导航栏内容
navigationItem.title = [NSString stringWithFormat:
@"第【%ld】个导航项"
, (long)count];
if (count == 2){
// 创建一个右边按钮
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self
action:@selector(pop)];
[navigationItem setRightBarButtonItem:rightButton];
}
if (count != 3) {
// 创建一个左边按钮
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self
action:@selector(push)];
//把左右两个按钮添加入导航栏集合中
[navigationItem setLeftBarButtonItem:leftButton];
}
if (count == 3){
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self
action:@selector(pop)];
[navigationItem setLeftBarButtonItem:leftButton];
}
return navigationItem;
}
@end
效果图如下: