UINavigationController 类

以下内容来自官方API


一、UINavigationController 简介

UINavigationController继承 UIViewController
在OC开发中UINavigationController类,主要是管理内容层次的导航,通过这个类我们可以将我们需要呈现的数据
呈现给用户。
UINavigationController 原理:
当一个UIViewController 作为一个NavigationController开始作为内容导航页服务时,OC将调用navigationItem属性来对所有通过navigationController
生成的内容层次(VC)进行存储
1.1 系统中设置界面 UINavigation 应用
navigation_controller1


一个导航控制器可以将当前内容呈现给系统,主要依靠navigation stock(存储view controller的数组)。
在navigation stock数组中,第一个元素是rootViewController,最后一个元素是当前呈现给用户的viewController,当我们添加和移出viewController时候,主要是从Navigation stock中移出元素
导航控制器可以通过操作“导航栏(navigation bar)”,对navigation stock进行管理

1.2 navigation controller 各对象之间的关系
navigation_controller2

1.3 navigation controller 各视图之间的关系
navigation_controller3


二、 UINavigationController 应用


AppDelegate.m
 
#import "AppDelegate.h"
#import "testVC.h"

@interface AppDelegate ()

@end
 
@implementation AppDelegate
 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor]; //设置背景色为橙色
     
    testVC *rootT = [[testVC alloc]init];
    UINavigationController *navT = [[UINavigationController alloc] initWithRootViewController:rootT];
    
    [navT.navigationBar setTranslucent:NO];
    [navT.navigationBar setHidden:NO];
    [navT.navigationBar setBarTintColor: [UIColor blueColor]];
    [navT.navigationBar setTintColor:[UIColor whiteColor]];
    
    self.window.rootViewController = navT;
   
    [self.window makeKeyAndVisible];
    
    return YES;
}

  
//testVC.m文件

    
    self.title = @"NavigationTest";
    self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey: UITextAttributeTextColor]; //设置title颜色
     
    self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
    
    self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:Nil];
    
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:Nil];
    [self.navigationController.navigationBar  setTintColor:[UIColor whiteColor]];