1,一個UINavigationController對應一個NavigationBar實例, 工具
2,一個UINavigationController能夠包含多個UIViewController, 代理
3,每個UIViewController對應一個UINavigationItem實例, 圖片
4,UINavigationItem控制器控制多個UIBarButtonItem(2個), it
5,一個UINavigationController控制着一個UIToolBar實例, io
6,UIToolBar中的UIBarButtonItem由當前的試圖控制器管理,而不是由導航控制器控制。 方法
一,自定義導航欄: im
咱們知道導航欄的背景顏色能夠經過「tinitColor」來設置。若是須要設置背景,則須要經過類別修改drawRect方法, img
5.0以上的SDK提供了設置背景圖片的方法,須要考慮版本兼容的問題: 兼容
二,導航控制器的維託方法: animate
導航控制器的委託方法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;