1,一个UINavigationController对应一个NavigationBar实例,
2,一个UINavigationController可以包含多个UIViewController,
3,每一个UIViewController对应一个UINavigationItem实例,
4,UINavigationItem控制器控制多个UIBarButtonItem(2个),
5,一个UINavigationController控制着一个UIToolBar实例,
6,UIToolBar中的UIBarButtonItem由当前的试图控制器管理,而不是由导航控制器控制。
一,自定义导航栏:
我们知道导航栏的背景颜色可以通过“tinitColor”来设置。如果需要设置背景,则需要通过类别修改drawRect方法,
5.0以上的SDK提供了设置背景图片的方法,需要考虑版本兼容的问题:
二,导航控制器的维托方法:
导航控制器的委托方法UINavigationControllerDelegate,通过设置代理监听视图控制器的切换。
三,导航控制器中的工具栏:
导航控制器中的UIToolBar
在导航控制器中会带有一个UIToolBar的实例,但默认是隐藏的,可以通过如下方式将其打开:
//显示导航控制器工具栏:
[self.navigationController setToolbarHidden:NO animated:YES];
这里需要注意,与UINavigationBar类似,导航控制器只拥有一个UIToolBar实例,但UIToolBar所拥有的UIBarButtonItem实例,是由试图控制器管理的。如下代码:
四:导航控制器常用属性与方法:
五,定制导航栏:
通过NavigationItem的titleView属性,定制标题视图。titleView属性是一个视图类,因此可以添加一个UIView的实例,也可以添加UIView的子类,如图:
定制左右栏目:
通过对导航栏的结构我们了解到NavigationItem实例中有一个leftBarButtonItem和rightBarButtonItem,而这两个属性又是UIBarButtonItem的实例,因此,通过初始化UIBarButtonItem实例设置导航栏的左右栏目项。
自定义左右栏目的常用方法:
//设置导航栏颜色:
self.navigationController.navigationBar.tiniColor = [UIColor redColor];
//设置导航栏提示用户内容
self.navigationItem.prompt = @"加载";
//取消提示
self.navigationItem.prompt =nil;