1、UINavigationController 导航控制器
UINavigationController:导航控制器,它用来管理多个视图控制器。
导航控制器可以认为是管理控制器的控制器,主要管理有层级关系的控制器。
1)、出栈,入栈、navgationBar、navgationItem的使用
2)、UINavigationController以栈的方式管理视图控制器。通过push和pop控制跳转
3)、UINavigationBar管理一组UINavigationItem,UINavigationItem包含了UIBarButtonItem。
1、创建
UINavigationController继承于UIViewController,以栈的方式管理所控制的视图控制器,至少要有一个被管理的视图控制器,这个控制器我们称作,导航控制器的根视图控制器。
任何继承自UIViewController的类(多态)都可以作为根控制器。
2、工作原理
UINavigationController通过栈的方式管理控制器的切换,控制入栈和出栈(addObjects/removeObjects到可变数组)来展示各个视图控制器。
UINavigationController的ContentView里始终显示栈顶控制器的view。
viewControllers(可变数组)属性存储了栈中(数组中)的所有被管理的控制器。
navigationController属性,属于父类(UIViewController的父类UIView)中的属性,每个在栈中的控制器,都能通过此属性,获取自己所在的UINavigationController对象。
3、入栈和出栈
pushViewController:animated //进入下一个视图控制器
popViewControllerAnimated: //返回上一个视图控制器
popToViewController:animated //返回到指定的视图控制器objectForKey
popToRootViewControllerAnimated //返回到根视图控制器
4、常用属性
viewControllers //所有处于栈中的控制器
topViewController //位于栈顶的控制器
visibleViewController //当前正在显示的控制器
navigationBar //导航条
2、定制导航条
1、navigationBar—-导航条,iOS7之后默认是透明的,iOS7之前默认是不透明的。
navigationBar在透明情况,与contentView会重合一部分区域。
navigationBar在不透明情况,contentView跟在navigationBar的下面。
navigationBar竖屏下默认高度44,横屏下默认高度32.
2、自定义navigationBar属性
barTintColor //设置导航条的颜色
setBackgroundImage:forBarMetrics: //导航条加背景图片
3、管理UINavigationItem
UINavigationBar除了能定义自身的样式外,还管理一组UINavigationItem。
与UINavigationController相似,UINavigationBar也是以栈的方式管理一组UINavigationItem。提供push和pop操作item。
每个视图控制器都有一个navigationItem属性。navigationItem中设置的左按钮、右按钮、标题等,会随着控制器的显示,也显示到navigationBar上
4、UINavigationItem
UINavigationItem属于MVC的M。封装了UInavigationBar上的数据等.
title //标题
titleView //标题视图
leftBarButtonItem //左按钮
rightBarButtonItem //右按钮
5、UIBarButtonItem
UIBarButtonItem属于MVC的M。定义了UINavigationItem上按钮的触
发事件,外观等
-initWithBarButtonSystemItem:target:action:
-initWithTitle:style:target:action:-initWithImage:style:target:action:tintColor
3、界面间传值
1、页面间通信
属性传值 从前往后
代理传值 从后往前(delegate的第一个场景)
2、单例传值
见第四周详细代码
总结
1、UINavigationController以栈的方式管理视图控制器。通过push和pop控制跳转
2、UINavigationBar管理一组UINavigationItem,UINavigationItem包含了UIBarButtonItem。
3、使用属性传值解决从前往后传值的问题
4、使用delegate解决从后往前传值的问题
5、alloc init 初始化创建出对象以后才可以指定代理
本文介绍了UINavigationController的使用,包括导航控制器的创建、工作原理、入栈出栈操作,以及导航条的定制。同时讲解了界面间通信的几种方式,如属性传值、代理传值和单例模式的应用。
1919

被折叠的 条评论
为什么被折叠?



