頁面之間跳轉(zhuǎn)

UINavigationController通過的方式管理控制器的切換,控制入棧和出棧來展示各個視圖控制器。
UINavigationController的ContentView里始終顯示棧頂控制的View缤弦。
Viewcontroller屬性是一個可變數(shù)組(NSMutableArray)存儲了棧中的所有被管理的控制器敌土,入棧的時候,使用addObject把新的視圖控制器對象添加到數(shù)組末尾闻妓,出棧的時候removeLastObject移除數(shù)組末尾的視圖控制器對象。
navigationController屬性掠械,父類的屬性由缆,每個在棧中的控制器,都能通過此屬性猾蒂,獲取自己所在的UINavigationController對象均唉。

棧的特點:先進后出,后進先出肚菠。
棧頂為當前顯示的視圖控制器舔箭。

具體參考文章 棧:http://book.2cto.com/201209/3976.html

UINavigationController常用屬性

viewControllers 所有處于棧中的控制器,使用數(shù)組保存
topViewController 位于棧頂?shù)目刂破?br> visibleViewController 當前顯示的控制器 等同于topViewController 模態(tài)控制器原理
navigationBar 導(dǎo)航欄
navigationItem 導(dǎo)航欄控件

界面鍵跳轉(zhuǎn)兩種方式:模態(tài)和推出

模態(tài)(present)用于單獨功能界面的跳轉(zhuǎn)和主要業(yè)務(wù)邏輯沒有關(guān)聯(lián)(登錄蚊逢,歌曲播放頁层扶,系統(tǒng)相冊,應(yīng)用中調(diào)用系統(tǒng)功能)时捌。
*1怒医、通過方法- (void)presentViewController:(UIViewController )viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion跳轉(zhuǎn)
同一個視圖控制器,在同一個時間奢讨,只能present一個另外的視圖控制器稚叹,如果當前的VC已經(jīng)present了焰薄,再次present一個VC時,就會提示失敗扒袖,具體的失敗提示在log里面有,如果想繼續(xù)present塞茅,就必須將原來present的控制器dismiss。
說到這里季率,再延伸下控制器的兩個可能很多人都沒注意的兩個只讀屬性:presentedViewController和presentingViewController野瘦,他們分別是被present的控制器和正在presenting的控制器。比如說飒泻, 控制器A和B鞭光,[A presentViewController B animated:YES completion:nil]; 那么A相對于B就是presentingViewController,B相對于A是presentedViewController泞遗,即這個時候  
    B.presentingViewController = A;
    A.presentedViewController = B;
  這兩個屬性惰许,在有些時候,用起來是很方便的史辙。比如說汹买,現(xiàn)在有個C界面,C界面被顯示出來聊倔,可能有兩種情況晦毙,一是modal出來的,另外一種是push出來的耙蔑,這時候就可以通過當前界面對象的presentingViewController屬性來判斷到底屬于哪種情況见妒,如果是nil,表示是UINavigationController對象push過來的纵潦,如果不是則是modal過來的徐鹤。
*2、通過方法 - (void)performSegueWithIdentifier:(NSString )identifier sender:(id)sender跳轉(zhuǎn)
    如果代碼要用這種方式邀层,首先要創(chuàng)建一個UIStoryboardSegue對象,并給初始化相應(yīng)的值遂庄。UIStoryboardSegue類有哪些方法和屬性寥院,去看看官方文檔就明白了,我這里就不多說了涛目。
    UIStoryboardSegue對象秸谢,提供了 跳轉(zhuǎn)源界面,跳轉(zhuǎn)目的界面霹肝,以及一個identifier也就是上面的identifier了估蹄,相信這么一說大家就知道這個類是干嘛的了。
    不過我沒用代碼這么寫過沫换,一般用這種方法跳轉(zhuǎn)臭蚁,我都是在storyboard里面直接根據(jù)所給的identifier來寫的,也就是我們在storyboard中不同界面間拉的線(也就是UIStoryboardSegue)的屬性中寫的。
    這種方法同時也支持UINavigationController的跳轉(zhuǎn)垮兑,不過跳轉(zhuǎn)的模式為push了冷尉,它只能在當前視圖控制器是UINavigationController時才能用。

上述兩種方式系枪,都是通過 dismissViewControllerAnimated 來返回前一個界面的雀哨。
推出(push)用于一系列的視圖之間的跳轉(zhuǎn)又層次遞進關(guān)系。
1私爷、pushViewController 推出某個視圖控制器
  需要注意的是雾棺,這個方法,是UINavigationController和其子類才有的方法衬浑,普通的控制器是沒有的捌浩。 所以用得時候一般是某個aNavigationController pushViewcontroller或者self.navigationController pushViewController。

四種setModalTransitionStyle風(fēng)格
UIModalTransitionStyleCoverVertical 從底部滑入
UIModalTransitionStyleFlipHorizontal,水平翻轉(zhuǎn)進入
UIModalTransitionStyleCrossDissolve,
交叉溶解UIModalTransitionStylePartialCurl,翻頁

場景切換
多個場景之間切換的樣式(Style)總共有5個:
Modal(模態(tài)) -- 過渡到另一個場景嚎卫,以完成一項任務(wù)嘉栓。任務(wù)完成后,將關(guān)閉該場景拓诸,并返回到原來的場景侵佃。Push(壓入) -- 創(chuàng)建一個場景鏈,用戶可在其中前后移動奠支。用于導(dǎo)航視圖控制器馋辈。
Replace(替換,僅適用于iPad) -- 替換當前場景倍谜,用于一些iPad特有的視圖控制器迈螟。
Popover(彈出框,僅適用于iPad) -- 一個帶箭頭的彈出框尔崔。
Custome(自定義) -- 通過編譯在場景之間進行自定義過渡答毫。

過渡類型(Transition)是從一個場景切換到另一個場景時播放的動畫。有4個選項:
Cover Vertical -- 新場景從下向上移動季春,逐漸覆蓋舊場景洗搂。
Flip Horizontal -- 視圖水平翻轉(zhuǎn),以顯示背面的新場景载弄。
Cross Dissolve -- 舊場景淡出耘拇,新場景淡入。
Partial Curl -- 舊場景像書頁一樣翻開宇攻,顯示下面的新場景惫叛。

在iPad應(yīng)用程序中,還會多出一個Presentation屬性逞刷,它決定了模態(tài)視圖在屏幕上的顯示方式嘉涌。有4種顯示樣式:
Form Sheet(表單) -- 將場景調(diào)整到比屏幕小(不管朝向)妻熊,并在當前場景后面顯示原始場景,這幾乎相當于在一個iPad窗口中顯示洛心。
Page Sheet(頁面) -- 調(diào)整場景大小固耘,使其以縱向格式顯示。
Full Screen(全屏) -- 調(diào)整場景大小词身,使其覆蓋整個屏幕厅目。
Current Context(當前上下文) -- 以原始場景的顯示方式展示場景。

返回
返回上一頁:
self.navigationController popViewControllerAnimated:YES
//返回指定的VC
self.navigationController popToViewController:self.navigationController.viewControllers[0] animated:YES
//返回根視圖
self.navigationController popToRootViewControllerAnimated:YES

2.通過上面所述的performSegueWithIdentifier方法跳轉(zhuǎn)法严,就不多說了损敷。 
  由于UINavigationController是一個視圖控制器的容器,他里面可能放了很多個控制器深啤,所以返回的時候可以分為幾種情況拗馒。

A:彈出當前顯示的界面,也就是返回到上個界面溯街, popViewController(注意诱桂,當當前界面是根結(jié)面時雷则,這個方法是不起作用的)七蜘。
B:返回到控制器的根結(jié)面,popToRootViewController抛腕。
C:跳轉(zhuǎn)到這個視圖控制器的中間的某個界面堤尾。popToViewController肝劲。用這種方式,就需要知道跳轉(zhuǎn)到哪個界面了郭宝,獲取需要跳轉(zhuǎn)的界面的方式有很多辞槐,我一般是遍歷UINavigationController的viewControllers數(shù)組,用iskindofclass方法來獲取某個控制器對象再來跳轉(zhuǎn)的粘室。

另外榄檬,UITabBarController,一般作為app的根界面視圖控制器衔统。其實與其說UITabBarController的界面跳轉(zhuǎn)丙号,不如說是界面切換,因為UITabBarController的界面跳轉(zhuǎn)其實就是UITabBarController的viewControllers數(shù)組中的幾個界面切換缰冤。只要設(shè)置好了UITabBarController的viewControllers數(shù)組,切面的切換基本就沒我們什么事兒了喳魏。

參考文章: IOS 瘋狂基礎(chǔ)之 頁面間跳轉(zhuǎn) http://blog.csdn.net/wudizhukk/article/details/8622389
iOS之淺談純代碼控制UIViewController視圖控制器跳轉(zhuǎn)界面的幾種方法 http://www.mamicode.com/info-detail-469709.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棉浸,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子刺彩,更是在濱河造成了極大的恐慌迷郑,老刑警劉巖枝恋,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗡害,居然都是意外死亡焚碌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門霸妹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來十电,“玉大人,你說我怎么就攤上這事叹螟【槁睿” “怎么了?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵罢绽,是天一觀的道長畏线。 經(jīng)常有香客問我,道長良价,這世上最難降的妖魔是什么寝殴? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮明垢,結(jié)果婚禮上蚣常,老公的妹妹穿的比我還像新娘。我一直安慰自己袖外,他們只是感情好史隆,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曼验,像睡著了一般泌射。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鬓照,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天熔酷,我揣著相機與錄音,去河邊找鬼豺裆。 笑死拒秘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的臭猜。 我是一名探鬼主播躺酒,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔑歌!你這毒婦竟也來了羹应?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤次屠,失蹤者是張志新(化名)和其女友劉穎园匹,沒想到半個月后雳刺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡裸违,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年掖桦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片供汛。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡枪汪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出紊馏,到底是詐尸還是另有隱情料饥,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布朱监,位于F島的核電站岸啡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赫编。R本人自食惡果不足惜巡蘸,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望擂送。 院中可真熱鬧悦荒,春花似錦、人聲如沸嘹吨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蟀拷。三九已至碰纬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間问芬,已是汗流浹背悦析。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留此衅,地道東北人强戴。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像挡鞍,于是被迫代替她去往敵國和親骑歹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容