11/03UINavigationController

UINavigationController

UINavigationController:導(dǎo)航控制器,,是iOS中最常用的多視圖控制器之一,用它來管理多個視圖控制器。

導(dǎo)航控制器可以稱為是,管理控制器的控制器,主要管理有層次遞進關(guān)系的控制器。

UINavigationController繼承于UIViewController,以棧的方式管理所控制的視圖控制器,至少要有一個被管理的視圖控制器,這個控制器我們稱作,導(dǎo)航控制器的根視圖控制器。

任何繼承自UIViewController的類(多態(tài))都可以作為根控制器。

//創(chuàng)建根視圖

let ViewC =ViewController()

//創(chuàng)建創(chuàng)建導(dǎo)航控制器 把rootVC作為導(dǎo)航控制器的根視圖控制器

let navc =UINavigationController(rootViewController:ViewC)

//設(shè)置導(dǎo)航為window的根視圖

window=UIWindow(frame:UIScreen.mainScreen().bounds)

window?.rootViewController= navc

window?.backgroundColor=UIColor.whiteColor()

window?.makeKeyAndVisible()

returntrue

UINavigetionBar

UINavigationBar(導(dǎo)航欄)上的設(shè)置主要分兩部分,一為導(dǎo)航欄上的各種導(dǎo)航部件(UINavigationItem),二為導(dǎo)航欄自身的相關(guān)設(shè)置。

navigationBar—導(dǎo)航條,iOS7之后默認是半透明的,iOS7之前默認是不透明的。

navigationBar豎屏下默認高度44,橫屏下默認高度32。

iOS7之后,navigationBar的背景會延伸到statusBar上。導(dǎo)航欄高度仍保持44,但顯示效果為64。

每個視圖控制器都有一個navigationItem屬性。navigationItem中設(shè)置的左按鈕、右按鈕、標題等,會隨著控制器的顯示,也顯示到navigationBar上。

//導(dǎo)航欄標題

navigationItem.title="Setting"

// self.title會同時改變導(dǎo)航欄的標題和tabBar的標題 可以用如下方法單獨操作導(dǎo)航欄標題

//self.navigationItem.title=@"標題";

//UIBarButtonItem

//左按鈕

let leftBarBtn =UIBarButtonItem(barButtonSystemItem:.Search, target:self, action:"leftBtnAction")

navigationItem.leftBarButtonItem= leftBarBtn

//右按鈕

letrightBarBtn =UIBarButtonItem(barButtonSystemItem:.Camera, target:self, action:"rightBtnAction")

navigationItem.rightBarButtonItem= rightBarBtn

//中間視圖對象及屬性

letsegment =UISegmentedControl(items: ["已接來電","未接來電"])

segment.frame=CGRectMake(0,0,100,30)

segment.selectedSegmentIndex=0

navigationItem.titleView= segment

//顯隱屬性

navigationController?.navigationBarHidden=false

//樣式

navigationController?.navigationBar.barStyle= .Default

//背景顏色

navigationController?.navigationBar.backgroundColor=UIColor.cyanColor()

//導(dǎo)航欄顏色

navigationController?.navigationBar.barTintColor=UIColor.blueColor()

//元素顏色

navigationController?.navigationBar.tintColor=UIColor.redColor()

//半透明效果

navigationController?.navigationBar.translucent=true

letmyview =UIView(frame:CGRectMake(0,0,150,150))

myview.backgroundColor=UIColor.yellowColor()

view.addSubview(myview)


頁面跳轉(zhuǎn)

UINavigationController通過棧的方式管理控制器的切換,控制入棧和出棧來展示各個視圖控制器。

UINavigationController的ContentView里始終顯示棧頂控制器的view。

viewControllers屬性是一個可變數(shù)組(NSMutableArray)存儲了棧中的所有被管理的控制器,入棧的時候,使用addObject把新的視圖控制器對象添加到數(shù)組末尾,出棧時removeLastObject移除數(shù)組末尾的試圖控制器對象。

navigationController屬性,父類中的屬性,每個在棧中的控制器,都能通過此屬性,獲取自己所在的UINavigationController對象。

常用屬性:viewControllers、topViewController、visibleViewController、navigationBar、navigationItem

入棧出棧:

pushViewController:animated:進入下一個

popViewControllerAnimated:返回上一個

popToViewController:animated:返回指定視圖控制器

popToRootViewControllerAnimated:返回根視圖控制器

進入下一個視圖控制器

funcrightBtnAction(){

//創(chuàng)建控制器2

letSecondVC =SecondViewController()

//使用當前控制器所在的導(dǎo)航視圖控制器跳轉(zhuǎn)到第二個控制器 push推出

navigationController?.pushViewController(SecondVC, animated:true)

println("right!!")

}

返回上一頁

funcbackAction(btn:UIBarButtonItem){

println("返回")

navigationController?.popViewControllerAnimated(true)

}

返回根視圖控制器

navigationController?.popToRootViewControllerAnimated(true)

模態(tài)

模態(tài)進入下一頁

functextAction(){

//創(chuàng)建對象

let fifthVC =fifthViewController()

//模態(tài)控制器

presentViewController(fifthVC, animated:true) { () ->Voidin

println("模態(tài)動作完成")

}

}

模態(tài)返回上一頁

func dismissViewController(){

//模態(tài)返回

dismissViewControllerAnimated(true, completion: { () ->Voidin

println("模態(tài)消失動作已結(jié)束")

})

}

頁面切換的兩種方式對比

頁面的切換方式主要分為:推出(push)和模態(tài)(present)。

推出(push)用于一系列的視圖之間的跳轉(zhuǎn)有層次遞進關(guān)系。

模態(tài)(present)用于單獨功能頁面的跳轉(zhuǎn)和主要業(yè)務(wù)邏輯沒有關(guān)聯(lián)(登錄,歌曲播放頁,系統(tǒng)相冊,應(yīng)用中調(diào)用系統(tǒng)功能)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容