欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS開發(fā)中ViewController的頁面跳轉(zhuǎn)和彈出模態(tài)

 更新時(shí)間:2015年10月09日 09:40:24   投稿:goldensun  
這篇文章主要介紹了iOS開發(fā)中ViewController的頁面跳轉(zhuǎn)和彈出模態(tài),ViewController是MVC開發(fā)模式中一個(gè)重要的類,需要的朋友可以參考下

ViewController 頁面跳轉(zhuǎn)
從一個(gè)Controller跳轉(zhuǎn)到另一個(gè)Controller時(shí),一般有以下2種:
1、利用UINavigationController,調(diào)用pushViewController,進(jìn)行跳轉(zhuǎn);這種采用壓棧和出棧的方式,進(jìn)行Controller的管理。調(diào)用popViewControllerAnimated方法可以返回。

復(fù)制代碼 代碼如下:

    PickImageViewController *ickImageViewController = [[PickImageViewController alloc] init];
    [self.navigationController pushViewController: ickImageViewController animated:true];
    [ickImageViewController release];


2、利用UIViewController自身的presentModalViewController,進(jìn)行跳轉(zhuǎn);調(diào)用dismissModalViewControllerAnimated方法可以返回。

復(fù)制代碼 代碼如下:

    PickImageViewController *ickImageViewController = [[PickImageViewController alloc] init];
    [self presentModalViewController:ickImageViewController animated:YES];
//返回
[self dismissModalViewControllerAnimated:YES];


Present ViewController Modally 

 
一、主要用途
 
  彈出模態(tài)ViewController是IOS變成中很有用的一個(gè)技術(shù),UIKit提供的一些專門用于模態(tài)顯示的ViewController,如UIImagePickerController等。彈出模態(tài)ViewController主要使用于一下這幾種情形:
 
  1、收集用戶輸入信息
 
  2、臨時(shí)呈現(xiàn)一些內(nèi)容
 
  3、臨時(shí)改變工作模式
 
  4、相應(yīng)設(shè)備方向變化(用于針對(duì)不同方向分別是想兩個(gè)ViewController的情況)
 
  5、顯示一個(gè)新的view層級(jí)
 
  這幾種情形都會(huì)暫時(shí)中斷程序正常的執(zhí)行流程,主要作用是收集或者顯示一些信息。
 
二、幾個(gè)概念和常用設(shè)置
 
1、presenting view controller Vs presented view controller
 
  當(dāng)我們?cè)趘iew controller A中模態(tài)顯示view controller B的時(shí)候,A就充當(dāng)presenting view controller(彈出VC),而B就是presented view controller(被彈出VC)。官方文檔建議這兩者之間通過delegate實(shí)現(xiàn)交互,如果使用過UIImagePickerController從系統(tǒng)相冊(cè)選取照片或者拍照,我們可以發(fā)現(xiàn)imagePickerController和彈出它的VC之間就是通過UIImagePickerControllerDelegate實(shí)現(xiàn)交互的。因此我們?cè)趯?shí)際應(yīng)用用,最好也遵守這個(gè)原則,在被彈出的VC中定義delegate,然后在彈出VC中實(shí)現(xiàn)該代理,這樣就可以比較方便的實(shí)現(xiàn)兩者之間的交互。
 
2、Modal Presentation Styles(彈出風(fēng)格)
 
  通過設(shè)置presenting VC的modalPresentationStyle屬性,我們可以設(shè)置彈出View Controller時(shí)的風(fēng)格,有以下四種風(fēng)格,其定義如下:

復(fù)制代碼 代碼如下:

typedef enum {
    UIModalPresentationFullScreen = 0,
    UIModalPresentationPageSheet,
    UIModalPresentationFormSheet,
    UIModalPresentationCurrentContext,
} UIModalPresentationStyle;

  UIModalPresentationFullScreen代表彈出VC時(shí),presented VC充滿全屏,如果彈出VC的wantsFullScreenLayout設(shè)置為YES的,則會(huì)填充到狀態(tài)欄下邊,否則不會(huì)填充到狀態(tài)欄之下。
 
  UIModalPresentationPageSheet代表彈出是彈出VC時(shí),presented VC的高度和當(dāng)前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同,剩余未覆蓋區(qū)域?qū)?huì)變暗并阻止用戶點(diǎn)擊,這種彈出模式下,豎屏?xí)r跟UIModalPresentationFullScreen的效果一樣,橫屏?xí)r候兩邊則會(huì)留下變暗的區(qū)域。
 
  UIModalPresentationFormSheet這種模式下,presented VC的高度和寬度均會(huì)小于屏幕尺寸,presented VC居中顯示,四周留下變暗區(qū)域。
 
  UIModalPresentationCurrentContext這種模式下,presented VC的彈出方式和presenting VC的父VC的方式相同。
 
  這四種方式在iPad上面統(tǒng)統(tǒng)有效,但在iPhone和iPod touch上面系統(tǒng)始終已UIModalPresentationFullScreen模式顯示presented VC。
 
3、Modal Transition Style(彈出時(shí)的動(dòng)畫風(fēng)格)
 
  通過設(shè)置設(shè)置presented VC的modalTransitionStyle屬性,我們可以設(shè)置彈出presented VC時(shí)場(chǎng)景切換動(dòng)畫的風(fēng)格,其定義如下:
復(fù)制代碼 代碼如下:

typedef enum {
        UIModalTransitionStyleCoverVertical = 0,
        UIModalTransitionStyleFlipHorizontal,
        UIModalTransitionStyleCrossDissolve,
        UIModalTransitionStylePartialCurl,
} UIModalTransitionStyle;

  我們可以看到有從底部滑入,水平翻轉(zhuǎn)進(jìn)入,交叉溶解以及翻頁這四種風(fēng)格可選。這四種風(fēng)格在不受設(shè)備的限制,即不管是iPhone還是iPad都會(huì)根據(jù)我們指定的風(fēng)格顯示轉(zhuǎn)場(chǎng)效果。
 
4、Dismiss Modal ViewController(消失彈出的VC)
 
  消失presented VC,我們可以通過調(diào)用以下兩個(gè)函數(shù)中的任何一個(gè)來完成
復(fù)制代碼 代碼如下:

dismissModalViewControllerAnimated:                 // 將要廢棄,不贊成繼續(xù)使用
dismissViewControllerAnimated:completion:

  誰來調(diào)用這消失presented VC的這個(gè)方法:正確的做法是“誰污染誰治理”,即presenting VC調(diào)用上面的方法來取消presented VC的顯示。這樣做有一個(gè)好處,如果一個(gè)VC真不用戶做的不同選擇可能彈出不同的view controller,當(dāng)不再需要顯示被彈出的view controller的時(shí)候,直接調(diào)用[self dismissModalViewControllerAnimated]即可使之消失,而不用去關(guān)心其具體顯示的哪一類view controller。當(dāng)然系統(tǒng)在這里做了優(yōu)化,當(dāng)我們?cè)趐resented VC里面調(diào)用上面的方法的時(shí)候,系統(tǒng)會(huì)自動(dòng)的將這個(gè)消息傳遞到相應(yīng)的presenting VC中,這樣就可以實(shí)現(xiàn)不管誰彈出了自己,當(dāng)不再需要的時(shí)候直接將自己消失掉的功能。在應(yīng)用中具體要采用那種要看具體情況,如果presented VC需要和presenting VC有數(shù)據(jù)傳遞的話,建議在presenting VC實(shí)現(xiàn)的代理函數(shù)中dismiss彈出的view controller。

相關(guān)文章

  • iOS UILabel根據(jù)內(nèi)容自動(dòng)調(diào)整高度

    iOS UILabel根據(jù)內(nèi)容自動(dòng)調(diào)整高度

    這篇文章主要為大家詳細(xì)介紹了iOS UILabel根據(jù)內(nèi)容自動(dòng)調(diào)整高度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 詳解iOS App中UITableView的創(chuàng)建與內(nèi)容刷新

    詳解iOS App中UITableView的創(chuàng)建與內(nèi)容刷新

    這篇文章主要介紹了iOS App中UITableView的創(chuàng)建與內(nèi)容刷新,講解了UITableView一些基本的樣式與cell的設(shè)置及刷新,需要的朋友可以參考下
    2016-04-04
  • iOS開發(fā)之表視圖詳解

    iOS開發(fā)之表視圖詳解

    表視圖是iOS開發(fā)中最重要的視圖,它以列表的形式展示數(shù)據(jù)。本篇文章詳細(xì)的介紹了表視圖的幾種用法,有需要的小伙伴可以了解一下。
    2016-11-11
  • ios基礎(chǔ)教程之常見的數(shù)組使用方法

    ios基礎(chǔ)教程之常見的數(shù)組使用方法

    這篇文章主要給大家介紹了關(guān)于ios基礎(chǔ)教程之常見的數(shù)組使用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • iOS常用組件之高效切圓角的方法匯總

    iOS常用組件之高效切圓角的方法匯總

    最近在研究切圓角的方法,也找了下網(wǎng)上的資料,所以下面這篇文章主要給大家總結(jié)介紹了關(guān)于iOS常用組件之高效切圓角的一些方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • iOS獲取手機(jī)通訊錄方式方法(最新)

    iOS獲取手機(jī)通訊錄方式方法(最新)

    本篇文章主要介紹了iOS獲取手機(jī)通訊錄方式方法(最新),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • IOS緩存管理之YYCache使用詳解

    IOS緩存管理之YYCache使用詳解

    這篇文章主要介紹了IOS緩存管理之YYCache使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • iOS App中UIPickerView選擇欄控件的使用實(shí)例解析

    iOS App中UIPickerView選擇欄控件的使用實(shí)例解析

    這篇文章主要介紹了iOS App中的UIPickerView選擇欄控件的使用,文中演示了兩個(gè)超詳細(xì)的例子,示例代碼為Objective-C,需要的朋友可以參考下
    2016-04-04
  • IOS上iframe的滾動(dòng)條失效的解決辦法

    IOS上iframe的滾動(dòng)條失效的解決辦法

    這篇文章主要為大家詳細(xì)介紹了IOS上iframe的滾動(dòng)條失效的解決辦法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • IOS 的彈性滾動(dòng)解決方案

    IOS 的彈性滾動(dòng)解決方案

    所謂彈性滾動(dòng)就是指在翻動(dòng)長(zhǎng)頁面手指離開時(shí),由慢到塊,由快到慢的過度。這篇文章主要介紹了IOS 的彈性滾動(dòng)解決方案,需要的朋友可以參考下
    2016-10-10

最新評(píng)論