理解导航控制器
2015-08-19 13:21
197 查看
// 当window将导航控制器作为根视图控制器的时候 // 1. window — > 导航控制器view // 2. window - > 导航控制器导航条view // 3. // UIView *view = viewController.view; // [self.window addSubview:view]; // 小结系统导航控制器的实现机理 //@property们 // 1. 要导航的控制器们 NSArray *viewControllers; // 2. 导航条 UIView *navBar; // 3. 自带视图 UIView *navView; // method们 // 1. push到一个控制器 /** * 当selfpush到一个控制器中, 大概执行这几步操作 1. [viewControllers addObject:新控制器的实例对象] 2. [self.navView addSubview:新控制器的视图] 3. 导航条需要bringToFront移到当期控制器的最上层 */ // 2. pop 到一个控制器 /** * 大概执行这几步操作 1. [当期控制器的视图 removeFromSuperView]; 2. [viewControllers remove需要移除的控制器对象]; 3. 导航条还是需要bringToFront移到当期控制器的最上层 */ // 3. 设置根视图控制器 // 其实就是push的过程,只不过这个时候数组里面没有对象,根视图控制器作为第一个导航控制器管理的视图控制器
// 1. 创建window对象 保证将视图显示到屏幕上 // 2. 保证window对象 makeKeyAndVisible self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; [self.window makeKeyAndVisible]; // 3. 添加需要显示出来的视图 // UIButton *button = [UIButton buttonWithType:UIButtonTypeContactAdd]; // UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)]; // view.backgroundColor = [UIColor yellowColor]; // [self.window addSubview:button]; // [self.window addSubview:view]; /* // 视图控制器 UIViewController *viewController = [[UIViewController alloc] init]; viewController.view.backgroundColor = [UIColor lightGrayColor]; // [self.window addSubview:viewController.view]; self.window.rootViewController = viewController; */ /** 1. 想要导航控制器去管理多个视图 UIViewController 交给他去管理 导航控制器是如何管理视图控制器的 */ /* UIViewController *vc = [[UIViewController alloc] init]; vc.view.backgroundColor = [UIColor redColor]; UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc]; // 栈就是一个数组 navController.view.backgroundColor = [UIColor greenColor]; NSLog(@"count = %ld",navController.viewControllers.count); // 存入数组中 // [navController pushViewController:vc animated:YES]; self.window.rootViewController = navController; */ YXFirstViewController *firstVC = [[YXFirstViewController alloc] init]; firstVC.view.backgroundColor = [UIColor yellowColor]; YXSecondViewController *secondVC = [[YXSecondViewController alloc] init]; secondVC.view.backgroundColor = [UIColor blueColor]; UINavigationController *nav = [[UINavigationController alloc] init]; // NSLog(@" --- %@",nav); // NSLog(@" --- %@",firstVC); // NSLog(@" --- %@",secondVC); [nav pushViewController:firstVC animated:NO]; // nil // if array.count == 0 animated == no // nsarray 0 + 1 // root view controller [nav pushViewController:secondVC animated:YES]; [nav pushViewController:[[UIViewController alloc] init]animated: NO]; [nav pushViewController:[[UIViewController alloc] init] animated:NO]; NSLog(@"%ld",nav.viewControllers.count); // 2 self.window.rootViewController = nav; // NSLog(@"%ld",nav.viewControllers.count); // 视图显示的起点 ,专门用来将视图绘制到屏幕上 /** UIScreen - > UIWindow(继承自UIView) - > UIView */ // UIButton *button = [[UIButton alloc] init]; // [button addTarget:self action:@selector(btnTouch) forControlEvents:UIControlEventTouchUpInside]; return YES; } //- (void)setRootViewController:(UIViewController *)viewController { // UIView *view = viewController.view; // [self.window addSubview:view]; //} - (void)pushViewController:(UIViewController *)viewController { // 将导航控制器保存到自己的属性 // viewController.navigationController = self; // // [self.viewControllers addobject:viewController]; // [self.view addsubView:viewController.view]; }
相关文章推荐
- awk
- Linux深入篇之七:配置Mysql+keepalived主从架构
- Linux下使用inotify实现对文件的监控
- oracle 根据汉字返回拼音函数
- MGTemplateEngine 模版引擎简单使用
- 做一天和尚就要撞好一天钟
- Leetcode 212 Word Search II 单词查找
- 字节流与字符流的区别详解
- Html a标签 关联连接在新窗口打开
- suds 在python3.x上的安装并访问webservice
- 【原】移动web点5像素的秘密
- 冒泡排序并统计其循环次数
- 统计一句话中重复字符、单词的个数,HashMap,Queue List
- c3p0 连接池配置
- linux 命令 - 切换目录cd
- 构造 HDOJ 5400 Arithmetic Sequence
- Saltstack系列:Saltstack分组
- 360:2015校招_俩个绝对路径找相对路径
- jdbc:oracle:thin:@192.168.3.98:1521:orcl(详解)
- Android应用程序基础(二)