UI_UINavigationController、界面通信

UINavigationController

定制UINavigationBar

界面间通信


UINavigationController

    1. UINavigationController:导航控制器,是iOS中最常用的多视图控制器之一,他用来管理多个视图控制器。
    2. 导航控制器可以认为是管理控制器的控制器,只要管理有层级关系的控制器

 

创建:

    1. UINavigationController继承与UIViewController
    2. 以栈的方式管理所控制的视图控制器
    3. 至少要有一个被管理的视图控制器,这个控制器我们称作:导航控制器的根视图控制器

 

 工作原理:

    1. UINavigationController通过栈的方式管理控制器的切换,控制入栈和出栈来展示各个视图控制器
    2. UINavigationController的ContentView里始终显示栈顶控制器的view
    3. viewControllers属性存储了栈中的所有被管理的控制器
    4. navigationController属性,父类中的属性,每个在栈中的控制器,都能通过此属性,获取自己所在的UINavigationController对象 

 

入栈和出栈 

//进入下一个视图控制器
pushViewController:animated
//返回上一个视图控制器
popViewControllerAnimated:
//返回到指定的视图控制器
popToViewController:animated
//返回到根视图控制器
popToRootViewControllerAnimated

常用属性

//所有处于栈中的控制器
viewControllers
//位于栈顶的控制器
topViewController
//当前正在显示的控制器
visibleViewController
//导航条
navigationBar

定制UINavigationBar 

  1. UINavigationBar-导航条,iOS7之后默认是透明的
  2. navigationBar在透明情况,与contentView会重合一部分区域
  3. navigationBar在不透明的情况,contentView跟在navigationBar的下面。
  4. navigationBar竖屏默认高度是44,横屏下默认高度是32

 

结构:

 

 //设置导航条颜色

barTintColor

//导航条加背景图片 

setBackgroundImage:forBarMetrics:

管理UINavigationItem

    1. UINavigationBar除了能定义自身的样式外,还管理一组UINavigationItem
    2. 与UINavigationController相似,UINavigationBar也是栈的方式管理一组UINavigationItem。提供push和pop操作item
    3. 每个视图控制器都有一个navigationItem属性。navigationItem中设置的左按钮、右按钮、标题等会随着控制器的现实,也显示到navigationBar上

 

  •  UINavigationItem

 

  1. UINavigationItem属于MVC中的M。封装了要显示在UINavigationBar上的数据
    1. title//标题
    2. titleView//标题视图
    3. leftBarButtonItem//左按钮
    4. rightBarButtonItem//右按钮 
  • UIBarButtonItem
  1. UIBarButtonItem属于MVC中的M。定义了UINavigationItem上按钮的触发事件,外观等
    1. initWithBarButtonSystemItem:target:action:
    2. initWithTitle:style:target:action:
    3. initWithImage:style:target:action:
tintColor

界面间传值

 

  • 传值:第二个视图控制器如何获得第一个视图控制器的部分信息?
  • 例如:第二个界面中label显示第一个界面textField中的文本 
    •  页面间通信:
    • 属性传值

  • 第一个视图控制器如何获得第二个视图控制器的部分信息?
  • 例如:第一个界面中label显示第二个界面textField中的文本 
    • 页面间通信:
    • 代理传值 

 总结:

  1. UINavigationController以栈的方式管理视图控制器。通过push和pop控制跳转。
  2. UI NavigationBar管理一组UINavigationItem,UINavigationItem包含了UIBarButtonItem。
  3. 使用属性传值解决从前往后传值的问题
  4. 使用delegate解决从后往前传值的问题 

 

posted @ 2015-04-11 20:46  captivity  阅读(145)  评论(0)    收藏  举报