UINavigationController导航控制器

2017-10-17  本文已影响0人  李琪_59dc

导航控制器基础使用

屏幕快照 2017-10-17 14.20.13.png
#import "AppDelegate.h"
#import "VCRoot.h"
//应用程序初始化完成后调用此函数
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    //创建一个视图控制器
    VCRoot *root = [[VCRoot alloc]init];
    //创建一个导航视图控制器
    //主要用来管理多个视图控制器的切换
    //必须有根视图控制器
    UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:root];
    //将window的**根视图**设置为导航控制器
    self.window.rootViewController = nav;
    
    [self.window makeKeyAndVisible];
    return YES;
}
@implementation VCRoot
- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor cyanColor];
    //设置导航栏的标题
    self.title = @"这是标题";
    //设置导航元素项的标题
    //如果没有设置,系统会自动使用self.title
    self.navigationItem.title = @"这也是标题";
    
    //创建一个导航栏左侧的按钮
    //视图title文字
    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]initWithTitle:@"leftbar" style:UIBarButtonItemStyleDone target:self action:@selector(pressLeft)];
    self.navigationItem.leftBarButtonItem = leftButton;
    //根据系统风格来创建按钮
    //只需要指定风格样式,系统风格的按钮内容或标题文字不能改
    UIBarButtonItem *rightButton =[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(pressRight)];
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 50, 40)];
    //    self.navigationItem.rightBarButtonItem = rightButton;
    label.text = @"test";
    label.textAlignment = NSTextAlignmentCenter;
    
    //将任何类型的控件添加到导航按钮的方法
    UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithCustomView:label];
    NSArray *arrayBtn = [NSArray arrayWithObjects:rightButton,item, nil];
    //将右侧按钮组添加到导航栏
    self.navigationItem.rightBarButtonItems = arrayBtn;
}
-(void)pressLeft{
    NSLog(@"press left button ");
}
-(void)pressRight{
    NSLog(@"press right button");
}

导航控制器切换

//VCRoot.m
#import "VCSecond.h"
- (void)viewDidLoad {
    [super viewDidLoad];
    //设置导航栏透明度
    self.navigationController.navigationBar.translucent = NO;
    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
    self.view.backgroundColor = [UIColor cyanColor];
    
    self.title = @"根视图";
    UIBarButtonItem *next = [[UIBarButtonItem alloc]initWithTitle:@"next" style:UIBarButtonItemStylePlain target:self action:@selector(pressNext)];
    self.navigationItem.rightBarButtonItem = next;
}
-(void)pressNext{
    VCSencod *vcSecond = [[VCSencod alloc]init];
    //使用当前视图控制器的导航控制器对象
    [self.navigationController pushViewController:vcSecond animated:YES];
}
//VCSecond.m
#import "VCSecond.h"
#import "VCThird.h"
@interface VCSencod ()
@end

@implementation VCSencod
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor greenColor];
    self.title = @"视图二";
    UIBarButtonItem *btnNext = [[UIBarButtonItem alloc]initWithTitle:@"第三级" style:UIBarButtonItemStylePlain target:self action:@selector(pressNext)];
    self.navigationItem.rightBarButtonItem = btnNext;
}
-(void)pressNext{
    VCThird *vc = [[VCThird alloc]init];
    //切换到视图控制器三
    [self.navigationController pushViewController:vc animated:YES];
}
//VCThird.m
#import "VCThird.h"
#import "VCSecond.h"
@interface VCThird ()
@end

@implementation VCThird
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor orangeColor];
    self.title = @"第三级";
    
    UIBarButtonItem *btnLeft = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(pressBack)];
    self.navigationItem.leftBarButtonItem = btnLeft;
    
    UIBarButtonItem *btnR = [[UIBarButtonItem alloc]initWithTitle:@"返回根视图" style:UIBarButtonItemStylePlain target:self action:@selector(pressRight)];
    self.navigationItem.rightBarButtonItem = btnR;
}
-(void)pressRight{
    //直接返回到根视图
    [self.navigationController popToRootViewControllerAnimated:YES];
}
-(void)pressBack{
    //返回上一级
    [self.navigationController popViewControllerAnimated:YES];
    NSLog(@"返回上一级");
}
上一篇下一篇

猜你喜欢

热点阅读