11/03UINavigationController

UINavigationController

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

導航控制器可以稱為是,管理控制器的控制器,主要管理有層次遞進關系的控制器荸百。

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

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

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

let ViewC =ViewController()

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

let navc =UINavigationController(rootViewController:ViewC)

//設置導航為window的根視圖

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

window?.rootViewController= navc

window?.backgroundColor=UIColor.whiteColor()

window?.makeKeyAndVisible()

returntrue

UINavigetionBar

UINavigationBar(導航欄)上的設置主要分兩部分,一為導航欄上的各種導航部件(UINavigationItem),二為導航欄自身的相關設置够话。

navigationBar—導航條,iOS7之后默認是半透明的,iOS7之前默認是不透明的蓝翰。

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

iOS7之后,navigationBar的背景會延伸到statusBar上更鲁。導航欄高度仍保持44,但顯示效果為64霎箍。

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

//導航欄標題

navigationItem.title="Setting"

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

//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()

//導航欄顏色

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)


頁面跳轉

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

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

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

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

常用屬性:viewControllers驯绎、topViewController、visibleViewController谋旦、navigationBar剩失、navigationItem

入棧出棧:

pushViewController:animated:進入下一個

popViewControllerAnimated:返回上一個

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

popToRootViewControllerAnimated:返回根視圖控制器

進入下一個視圖控制器

funcrightBtnAction(){

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

letSecondVC =SecondViewController()

//使用當前控制器所在的導航視圖控制器跳轉到第二個控制器 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)消失動作已結束")

})

}

頁面切換的兩種方式對比

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

推出(push)用于一系列的視圖之間的跳轉有層次遞進關系册着。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市甲捏,隨后出現(xiàn)的幾起案子演熟,更是在濱河造成了極大的恐慌,老刑警劉巖司顿,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芒粹,死亡現(xiàn)場離奇詭異兄纺,居然都是意外死亡,警方通過查閱死者的電腦和手機化漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門估脆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人获三,你說我怎么就攤上這事旁蔼。” “怎么了疙教?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵棺聊,是天一觀的道長。 經常有香客問我贞谓,道長限佩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任裸弦,我火速辦了婚禮祟同,結果婚禮上,老公的妹妹穿的比我還像新娘理疙。我一直安慰自己晕城,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布窖贤。 她就那樣靜靜地躺著砖顷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赃梧。 梳的紋絲不亂的頭發(fā)上滤蝠,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音授嘀,去河邊找鬼物咳。 笑死,一個胖子當著我的面吹牛蹄皱,可吹牛的內容都是我干的览闰。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼巷折,長吁一口氣:“原來是場噩夢啊……” “哼焕济!你這毒婦竟也來了?” 一聲冷哼從身側響起盔几,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掩幢,沒想到半個月后逊拍,有當地人在樹林里發(fā)現(xiàn)了一具尸體上鞠,經...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年芯丧,在試婚紗的時候發(fā)現(xiàn)自己被綠了芍阎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡缨恒,死狀恐怖谴咸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情骗露,我是刑警寧澤岭佳,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站萧锉,受9級特大地震影響珊随,放射性物質發(fā)生泄漏。R本人自食惡果不足惜柿隙,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一叶洞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禀崖,春花似錦衩辟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叶雹,卻和暖如春财饥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背折晦。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工钥星, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人满着。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓谦炒,卻偏偏與公主長得像屁柏,于是被迫代替她去往敵國和親卢未。 傳聞我的和親對象是個殘疾皇子督怜,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內容