UINavigationController的使用介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UINavigationController的使用介绍相关的知识,希望对你有一定的参考价值。

1.UINavigationCotroller

  1> UINavigationContoller是存储在栈区的.

  2> 栈区的执顺序是先进后出.

  3>UINavigationController的把没一个子控制器都压入到栈去,然后通过方法弹出最上面的控制器.

  3> 通过pust的方法跳到下一个控制器.

  4> 通过pop方法可以返回上一个控制器

 

 

2.创建一个UINavigationController 

 

  //2.创建控制器
       UINavigationController *nav = [[UINavigationController alloc]init];

  //2.1把第一个控制器压入到栈中
         HMOneViewController *oneVc = [[HMOneViewController alloc]init];
         [nav pushViewController:oneVc animated:YES];

  //2.2设置window根控制器
         self.window.rootViewController = nav;
     
  //2.3让window成为主要的window并且可见
         [self.window makeKeyAndVisible]; 

 

 

 

3.通过按钮切换控制器

 

  //按钮点击事件
    - (void)buttonDidClick {
    
        //创建一个第二个控制器
        HMTwoViewController *twoVc = [[HMTwoViewController alloc]init];

        //把第二个控制器压入到栈中
        [self.navigationController pushViewController:twoVc animated:YES];
     
    }       

 

 

4.通过代码设置UINavigationController的导航

 

  //4.1设置控制器的标题
      self.navigtionItem.title = @"红色控制器";

  //4.1.1上面代码可以简写
      self.titlr = @"红色控制器";

  //4.1.2 设置自定一的标题
      self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MainTitle"]]

  //4.2设置导航栏的颜色,要获取NavigationBar的外观来设置
      [[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];

  //4.3设置NavigationBar的title的颜色
      [[UINavigationBar appearance]setTitleTextAttributes:@{
                                      NSForegroundColorAttributeName:[UIColor whiteColor]
                                      }];

  //4.4设置left按钮right按钮
  //4.4.1创建一个自定义的按钮
      self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]

  //4.4.2创建一个文字按钮
      self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"下一个控制器" style:UIBarButtonItemStylePlain target:nil action:nil];

  //4.4.3UIBarButtonItme的系统提供的类型创建方式
      UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:<按钮的类型> target:<执行谁的方法> action:<执行的方法>]

  //4.5设置返回按钮,传一个自定义的按钮,系统会自动帮我们添加"<"
      self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

 

 

 

5.通过storyboard创建控制器

 

  

  1>设置UINavigationController的根控制器

    技术分享

 

  2>通过按钮切换控制器,iOS8之前用pushmodal. iOS8以后用showpresent Modally.

    2.1.show动画是从右面过来

    2.2.present Modally动画是从下面过来

    2.3.Custom是自定义的跳转,以后会讲到.

    技术分享

 

  3>如果出栈,不能使用脱线方式实现,必须使用代码,Storyboard中线是不能交叉的

    

  //如果出栈,不能使用脱线方式实现,必须使用代码,Storyboard中线是不能交叉的
  //让控制器出栈,返回到上一个控制器
      [self.navigationController popViewControllerAnimated:YES];
    
  //让控制器出栈,返回到跟控制器上
      [self.navigationController popToRootViewControllerAnimated:YES];
    
  //让控制器出栈,返回到指定控制器上
      [self.navigationController popToViewController:控制器名字 animated:YES];
    
  //让控制器出栈,弹出栈顶的控制器
     [self.navigationController popoverPresentationController];  

 

 

 

6.视图发生变化的时候调用的方法

 

    //当视图将要显示的时候就会调用
      - (void)viewWillAppear:(BOOL)animated
    
    //当视图显示完成的时候就会调用
      - (void)viewDidAppear:(BOOL)animated
    
    //当时图将要消失的时候调用
      - (void)viewWillDisappear:(BOOL)animated
    
    //当时图消失完毕后调用
      - (void)viewDidDisappear:(BOOL)animated
    
    //当视图加载完成调用
     - (void)viewDidLoad

 

以上是关于UINavigationController的使用介绍的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationcontroller 中未使用的视图会发生啥?

一起使用 UITabBarController 和 UINavigationController

使用 push segue 时 UINavigationController 是不是强制

UINavigationController - 使用 UIBlurEffect 清除背景

详细使用 UINavigationController 时的景观 UISplitViewController

UINavigationController