UINavigationControlle:導航控制器,是iOS中最常用的多視圖控制器之一,它用來管理多個試圖控制器
導航控制器可以認為是管理控制器的控制器,主要管理有層級關系的控制器
UINavigationController的創建
UINavigationController繼承與UIViewController,以棧的方式管理所控制的視圖控制器,至少要有一個被管理的試圖控制器,這個控制器我們稱作,導航控制器的根視圖控制器
任何繼承自UIViewController的類(多態)都可以作為根控制器
UINavigationController的工作原理
UINavigationController通過棧的方式管理控制器的切換,控制入棧和出棧,來展示各個視圖控制器
UINavigationController的ControllersView裡始終顯示棧頂控制器的view
viewControllers屬性存儲了棧中的所有被管理的控制器
navigationController 屬性,父類中的屬性,每一個在棧中的控制器都能通過此屬性,獲取自己所在的UINavigationController對象
出棧和入棧的方法
例如:我們首先創建一個根視圖控制器RootViewController和詳情視圖控制器DetailViewController,同時在根視圖上添加一個button,當我們點擊button時通過響應其方法來實現視圖的切換,具體實現如下:
當我們進入DetailViewController時,同樣可以通過點擊詳情試圖上的按鈕在button的響應方法裡來實現視圖間的切換
常用的屬性有
UINavigationBar
navigationBar--導航條,iOS7以後默認是透明的,iOS7以前默認是不透明的。
navigationBar在透明情況下,與contentView會重合一部分區域
navigationBar在不透明情況,ContentView跟在navigationBar下面
navigationBar豎屏下默認高度44,橫屏下默認高度32
自定義navigationBar
barTintColor // 設置導航條的顏色
setBackgroundImage:forBarMetrics://導航條加背景圖片
管理UINavigationItem
UINavigationBar處理能管理一組UINavigationItem
與UINavigationController相似,UINavigationBar也是以棧的方式管理一組UINavigationItem。提供push和pop操作item
每個視圖控制器都有一個navigationItem屬性,navigationItem中設置的做按鈕、右按鈕、標題等,會隨著控制器的顯示,也顯示到navigationBar上
UINavigationItem屬於MVC中的M,封裝了要顯示在UiNavigationBar上的數據
title: 標題
titleView :標題視圖
leftBarButtonItem :左按鈕
rightBarButtonItem :右按鈕
UIBarButtonItem
UIBarButtonItem屬於MVC的M,定義了UINavigationItem上按鈕的觸發事件,外觀等
-initWithBarButtonSystemItem:target:action:設置按鈕樣式及觸發事件
-initWithTiltle:style:target:action: 設置標題的觸發事件
-initWithImage:style:target:action:設置視圖的觸發事件
tintColor 設置tintColor可以影響添加在導航條上的系統樣式的按鈕的顏色