UINavigationController
UINavigationController俗称导航控制器(导航栏),可以看做是一个试图控制器的容器,他是视图与视图之间联系沟通的桥梁,主要用于试图控制器之间的沟通,一般作为根视图控制器使用。
一.UINavigationController的属性
1、 创建:在appdelegate里的didfinishlaunsh方法里创建,创建的同时需要给UINavigationController设置艮视图控制器:
//首先创建自己的视图控制器
ViewController *vc = [[ViewController alloc]init];
//然后创建导航控制器,并且将上一步创建的ViewController对象设置为导航控制器的根控制器
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
//最后将导航控制器设置为窗口的根控制器
self.window.rootViewController = nav;
2、 self.title = @"导航";//设置导航条在某试图控制器中的标题(在对应视图控制器中设置)
3、 self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName, nil];//修改标题颜色
4、 self.navigationController.navigationBar.translucent = NO;//设置导航条半透明状态,默认为yes,会遮挡住self.view的64像素的高度
5、 [self.navigationController.navigationBar setBarTintColor:[UIColor blackColor]];//设置navigationbar的颜色
6、 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg"] forBarMetrics:UIBarMetricsDefault];//设置背景图片(注意尺寸)
7、 self.navigationController.navigationBarHidden = YES;//隐藏导航条
[self.navigationController setNavigationBarHidden:YES animated: YES];//隐藏导航条,是否带动画
二.UINavigationController的界面之间的转换
8、 [self.navigationController pushViewController:sec animated:YES];//推到下一个视图
9、 [self.navigationController popViewControllerAnimated:YES];//返回上一级视图
10、 [self.navigationController popToRootViewControllerAnimated:YES];//退回到根视图
11、 (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated; //返回指定视图
12、 UIViewController *vc = [self.navigationController.viewControllers objectAtIndex:0];//获得导航控制器的viewcontrollers栈
13、 UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:nil];//设置导航条返回按钮的标题
self.navigationItem.backBarButtonItem = backButton;
14、 //自定义返回按钮:
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(10, 10, 40, 40);
[button setTitle:@"返回" forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = left;
15、 //自定义titleView
UISegmentedControl *seg = [[UISegmentedControl alloc] initWithItems:@[@"1",@"2"]];
seg.frame = CGRectMake(0, 10, 80, 20);
self.navigationItem.titleView = seg;