UI_UINavigationController、界面通信
UINavigationController
定制UINavigationBar
界面间通信
UINavigationController
- UINavigationController:导航控制器,是iOS中最常用的多视图控制器之一,他用来管理多个视图控制器。
- 导航控制器可以认为是管理控制器的控制器,只要管理有层级关系的控制器
创建:
- UINavigationController继承与UIViewController
- 以栈的方式管理所控制的视图控制器
- 至少要有一个被管理的视图控制器,这个控制器我们称作:导航控制器的根视图控制器
工作原理:
- UINavigationController通过栈的方式管理控制器的切换,控制入栈和出栈来展示各个视图控制器
- UINavigationController的ContentView里始终显示栈顶控制器的view
- viewControllers属性存储了栈中的所有被管理的控制器
- navigationController属性,父类中的属性,每个在栈中的控制器,都能通过此属性,获取自己所在的UINavigationController对象
入栈和出栈
//进入下一个视图控制器
pushViewController:animated
//返回上一个视图控制器
popViewControllerAnimated:
//返回到指定的视图控制器
popToViewController:animated
//返回到根视图控制器
popToRootViewControllerAnimated
常用属性
//所有处于栈中的控制器
viewControllers
//位于栈顶的控制器
topViewController
//当前正在显示的控制器
visibleViewController
//导航条
navigationBar
定制UINavigationBar
- UINavigationBar-导航条,iOS7之后默认是透明的
- navigationBar在透明情况,与contentView会重合一部分区域
- navigationBar在不透明的情况,contentView跟在navigationBar的下面。
- navigationBar竖屏默认高度是44,横屏下默认高度是32
//设置导航条颜色
barTintColor
//导航条加背景图片
setBackgroundImage:forBarMetrics:
管理UINavigationItem
- UINavigationBar除了能定义自身的样式外,还管理一组UINavigationItem
- 与UINavigationController相似,UINavigationBar也是栈的方式管理一组UINavigationItem。提供push和pop操作item
- 每个视图控制器都有一个navigationItem属性。navigationItem中设置的左按钮、右按钮、标题等会随着控制器的现实,也显示到navigationBar上
- UINavigationItem
- UINavigationItem属于MVC中的M。封装了要显示在UINavigationBar上的数据
- title//标题
- titleView//标题视图
- leftBarButtonItem//左按钮
- rightBarButtonItem//右按钮
- UIBarButtonItem
- UIBarButtonItem属于MVC中的M。定义了UINavigationItem上按钮的触发事件,外观等
- initWithBarButtonSystemItem:target:action:
- initWithTitle:style:target:action:
- initWithImage:style:target:action:
界面间传值
- 传值:第二个视图控制器如何获得第一个视图控制器的部分信息?
- 例如:第二个界面中label显示第一个界面textField中的文本
- 页面间通信:
- 属性传值
- 第一个视图控制器如何获得第二个视图控制器的部分信息?
- 例如:第一个界面中label显示第二个界面textField中的文本
- 页面间通信:
- 代理传值
总结:
- UINavigationController以栈的方式管理视图控制器。通过push和pop控制跳转。
- UI NavigationBar管理一组UINavigationItem,UINavigationItem包含了UIBarButtonItem。
- 使用属性传值解决从前往后传值的问题
- 使用delegate解决从后往前传值的问题

浙公网安备 33010602011771号