掌握:

  1. UINavigationController的使用:添加、移除控制器。

  2. UINavigationBar内容的设置。

---------------------------------------------------------------------------------------------------------

一、控制器的添加和移除:

  1. UINavigationController以栈的形式保存子控制器:

    @property(nonatomic,copy) NSArray *viewControllers;

    @property(nonatomic,readonly) NSArray *childViewControllers;

2. 使用push方法能将某个控制器压入栈

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;

/** 下面方法中用作示意*/

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
          self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
          self.window.backgroundColor = [UIColor whiteColor];
    
      // 1.创建导航控制器
            XZOneViewController *one = [[XZOneViewController alloc] init];
            UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:one]; // 传入一个栈底控制器来初始化导航控制器 (常用)

  
      //  拿到栈顶控制器(显示在眼前的控制器)
      //  nav.topViewController

//  存放所有子控制器的栈
      //  nav.viewControllers
      //  这个数组也存放子控制器
      //  nav.childViewControllers

//  2.添加子控制器
      //  XZOneViewController *one = [[XZOneViewController alloc] init];
      //  [nav addChildViewController:one];                // 这样子也能把one控制器放到 数组 viewControllers 和  childViewControllers 中。
      //  [nav pushViewController:one animated:YES]; // 将one压入栈中,即放入 viewControllers 和 childViewControllers 中。 (推荐用法,有动画)

//  nav.viewControllers = @[one];  // 这样也是设置
      //  nav.viewControllers = @[one];  // 不能这么干,因为viewControllers是只读的。

// 3.设置为窗口的根控制器
          self.window.rootViewController = nav;
    
          [self.window makeKeyAndVisible];
          return YES;
}

3. 使用pop方法可以移除控制器
  // 将栈顶的控制器移除

  - (UIViewController *)popViewControllerAnimated:(BOOL)animated;

  // 回到指定的子控制器

  - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;

  // 回到根控制器(栈底控制器)

  - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;

 
  4. 导航栏的内容由栈顶控制器的navigationItem属性决定
 
    UINavigationItem有以下属性影响着导航栏的内容
    // 左上角的返回按钮

      @property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;

 
    // 中间的标题视图

      @property(nonatomic,retain) UIView          *titleView;

    
    // 中间的标题文字

      @property(nonatomic,copy)   NSString        *title;

    
      // 左上角的视图

      @property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;

    // 右上角的视图

      @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

二、控制器的view结构 以及 UINavigationBar导航条内容的设置:

  1. 情景一:

  self.navigationItem.title = @"第一个控制器";
   
      UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:nil action:nil];   
      UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:nil action:nil];
    
      self.navigationItem.rightBarButtonItems = @[item1, item2];
      self.navigationItem.leftBarButtonItems   = @[item1, item2];

  

  2. 情景二:

      self.navigationItem.titleView = [UIButton buttonWithType:UIButtonTypeContactAdd];
      self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:nil action:nil];

UINavigationController相关的更多相关文章

  1. 系统UINavigationController使用相关参考

    闲来无事便在网上google&baidu了一番UINavigationController的相关文章,然后又看了下官方文档:看看更新到iOS7之后UINavigationController的 ...

  2. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  3. UINavigationController与UITabBarController相关问题

    UINavigationController与UITabBarController相关问题 UINavigationController与UITabBarController混用是非常常见的,有时候会 ...

  4. UINavigationController的创建和相关设置---学习笔记四

    导航控制器 一.设置字体大小,背景等. 二.自定义返回按钮. 三.设置手势. 一.导航中也有个appearance属性,通过它可以设置所有导航的颜色. 二.自定义返回按钮. 1.首先需要知道的是,要把 ...

  5. IOS UINavigationController 操作相关集合

    1.修改中间Title字体以及大小 [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dict ...

  6. UINavigationController

    知识点: 1)UINavigationController 2)UINavigationBar 3)UINavigationItem 4)UIToolBar ===================== ...

  7. UIScrollerView遇到UINavigationController

    今天在UITabBarController  的第一个Tab 页面中放入一个ScrollView, 原本以为可以正常运行. 结果却让人大跌眼镜.  每当我手动滚动或者 缓慢导航到另外一个页面时,当前的 ...

  8. 升级到iOS9之后的相关适配

    iOS9AdaptationTips(iOS9开发学习交流群:458884057) iOS9适配系列教程[中文在页面下方]转自@iOS程序犭袁 (截至2015年9月26日共有10篇,后续还将持续更新. ...

  9. iOS开发UINavigation——导航控制器UINavigationController

    iOS开发UINavigation系列一——导航栏UINavigtionBar摘要iOS中的导航条可以附着于导航控制器之中使用,也可以在controller中单独使用,这篇博客,主要讨论有关导航栏的使 ...

随机推荐

  1. 将webservice嵌套到以完成的web项目中

    一.先把webservice服务端写入项目(基于spring) 1.在pom.xml中引入WebService相关的jar依赖 <!--webservice开始 --> <!--ht ...

  2. FTL(FreeMarker)基础

    FreeMarker标签使用一.FreeMarker模板文件主要有4个部分组成1.文本,直接输出的部分2.注释,即<#--...-->格式不会输出3.插值(Interpolation):即 ...

  3. Python模块入门(二)

    一.模块的循环导入问题 在python工程中,由于架构不当,可能会出现模块间互相引用的情况.这时候需要通过一些方法来解决这个问题 1.重新设计架构,解决互相引用的关系. 2.把import语句放置在模 ...

  4. Vue.js - Day1

    什么是Vue.js Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App, Vue语法也是可以用于进行手机App开发的,需要借助于We ...

  5. 洛谷P3128 [USACO15DEC]最大流Max Flow(树上差分)

    题意 题目链接 Sol 树上差分模板题 发现自己傻傻的分不清边差分和点差分 边差分就是对边进行操作,我们在\(u, v\)除加上\(val\),同时在\(lca\)处减去\(2 * val\) 点差分 ...

  6. form中action属性后面?传递参数 获取不到

    $p_id = $_REQUEST['p_id']; echo "<h1>您将更新商品编号为<span>$p_id</span>的商品信息 <a h ...

  7. 让DIV的滚动条自动滚动到最底部

    一个在线聊天窗口,在做最后的修饰时,需要对获得的信息即时滚动以保证用户总能看到最新消息. 我得出的结论是:在选中div时,必须用原生js,jQuery不起作用 <!DOCTYPE> < ...

  8. Dynamics CRM 2011通过客户端代码选择视图

    在实施的过程中我们经常会遇到这样的场景,有个系统标准的Lookup字段对应的不是一种Entity,如很多地方的客户实际上可选account或者contact,有的地方可选systemuser或者tea ...

  9. ScrollView监听滑动到顶部和底部的方法

    不需要监听滑动位置,只需要重写ScrollView的onOverScrolled和stopNestedScroll方法就可以了 public class ReadScrollView extends ...

  10. 五环之歌之PHP分页

    根据以往的经验,对于很多初学者,分页功能实现起来还是有一定的困难的,为了帮大家解决这样的问题:特此献上五环之歌.从此分页功能便是如小岳岳唱歌一样简练,漂亮,精干.哈哈,不闲扯了.正式进入千锋PHP五环 ...