UINavigationController的简单学习

UINavigationController的简单学习


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;