标签:
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
2 // 设置window
3 self.window = [[UIWindow alloc] init];
4 self.window.frame = [[UIScreen mainScreen] bounds];
5 self.window.backgroundColor = [UIColor grayColor]; // window是灰色背景
6 [self.window makeKeyAndVisible];
7
8
9 // 设置UINavigationController
10 UINavigationController *nvController = [[UINavigationController alloc] init];
11 nvController.view.backgroundColor = [UIColor blueColor]; // 设置蓝色背景
12 self.window.rootViewController = nvController;
13
14 return YES;
15 }
1 // 配置第一个子控制器 2 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init]; 3 [nvController pushViewController:vc1 animated:YES]; 4 5 // 配置第二个子控制器 6 ViewControllerTwo *vc2 = [[ViewControllerTwo alloc] init]; 7 [nvController pushViewController:vc2 animated:YES]; 8 9 // 配置第三个子控制器,这是栈顶的控制器 10 ViewControllerThree *vc3 = [[ViewControllerThree alloc] init]; 11 [nvController pushViewController:vc3 animated:YES];
1 - (void)applicationDidBecomeActive:(UIApplication *)application {
2 // 必须在加载完毕激活app后,所有的view的尺寸位置才能确定
3 UINavigationController *nvController = (UINavigationController *)self.window.rootViewController;
4 NSLog(@"%@", NSStringFromCGRect(nvController.view.frame)); // 整个导航控制器的frame
5 NSLog(@"%@", NSStringFromCGRect(nvController.navigationBar.frame)); // 导航条的frame
6 }
7
1 @property(nonatomic,copy) NSArray *viewControllers; // The current view controller stack.
1 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated; // Uses a horizontal slide transition. Has no effect if the view controller is already in the stack.
1 // 配置第一个子控制器 2 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init]; 3 [nvController pushViewController:vc1 animated:YES];
1 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init]; 2 [nvController addChildViewController:vc1];
1 // 配置第一个子控制器 2 ViewControllerOne *vc1 = [[ViewControllerOne alloc] init]; 3 nvController.viewControllers = @[vc1];
1 // 传入一个viewController作为 nvController的 rootViewController 2 nvController = [[UINavigationController alloc] initWithRootViewController:vc1];
1 - (IBAction)goToThree {
2 // 配置第三个子控制器
3 ViewControllerThree *vc3 = [[ViewControllerThree alloc] init];
4 [self.navigationController pushViewController:vc3 animated:YES];
5 }
6
7 - (IBAction)gotoFour {
8 // 配置第四个子控制器
9 ViewControllerFour *vc4 = [[ViewControllerFour alloc] init];
10 [self.navigationController pushViewController:vc4 animated:YES];
11 }
1 // 这里是第三个,要回到第二个
2 - (IBAction)backtoTwo {
3 [self.navigationController popViewControllerAnimated:YES];
4 }
1 // 现在是第三个控制器的view,要回到第一个控制器的view
2 - (IBAction)backtoOne {
3 // 其实这里拿不到第一个控制器vc1的引用
4 // [self.navigationController popToViewController:vc1 animated:YES];
5
6 // 直接弹出,直到导航器的rootViewController,就是第一个子控制器vc1了
7 [self.navigationController popToRootViewControllerAnimated:YES];
8 }
1 @property(nonatomic,copy) NSString *title; // Localized title for use by a parent controller.
1 - (void)viewDidLoad {
2 [super viewDidLoad];
3 self.navigationItem.title = @"第一个view";
4 }
1 - (void)viewDidLoad {
2 [super viewDidLoad];
3 self.navigationItem.title = @"第二个控制器";
4
5 // 设置左上角的item
6 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"我要回去" style:UIBarButtonItemStylePlain target:nil action:nil];
7
8 // 设置右上角的item
9 // 使用bar按钮
10 UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:nil action:nil];
11
12 // 使用自定义view
13 UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithCustomView:[UIButton buttonWithType:UIButtonTypeContactAdd]];
14
15 // 这是这是从右到左排列显示
16 self.navigationItem.rightBarButtonItems = @[item1,item2];
17 }
1 // 第二个控制器
2 - (void)viewDidLoad {
3 [super viewDidLoad];
4 ...
5 // 设置第二个控制器的“返回”样式
6 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"速速回2" style:UIBarButtonItemStylePlain target:nil action:nil];
7 }
1 - (void)applicationDidBecomeActive:(UIApplication *)application {
2 // 必须在加载完毕激活app后,所有的view的尺寸位置才能确定
3 UINavigationController *nvController = (UINavigationController *)self.window.rootViewController;
4 NSLog(@"%@", NSStringFromCGRect(nvController.view.frame)); // 整个导航控制器的frame
5 NSLog(@"%@", NSStringFromCGRect(nvController.navigationBar.frame)); // 导航条的frame
6 }
最后的点击链接图:
【iOS基础控件 - 15】- UINavigationController 多控制器 简单使用
标签:
原文地址:http://www.cnblogs.com/kengsir/p/4281913.html