最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

ViewController 頁面跳轉
從一個Controller跳轉到另一個Controller時,一般有以下2種:
1、利用UINavigationController,調用pushViewController,進行跳轉;這種采用壓棧和出棧的方式,進行Controller的管理。調用popViewControllerAnimated方法可以返回。

復制代碼 代碼如下:

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


2、利用UIViewController自身的presentModalViewController,進行跳轉;調用dismissModalViewControllerAnimated方法可以返回。

復制代碼 代碼如下:

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


Present ViewController Modally 

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

復制代碼 代碼如下:

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

  UIModalPresentationFullScreen代表彈出VC時,presented VC充滿全屏,如果彈出VC的wantsFullScreenLayout設置為YES的,則會填充到狀態(tài)欄下邊,否則不會填充到狀態(tài)欄之下。
 
  UIModalPresentationPageSheet代表彈出是彈出VC時,presented VC的高度和當前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同,剩余未覆蓋區(qū)域將會變暗并阻止用戶點擊,這種彈出模式下,豎屏時跟UIModalPresentationFullScreen的效果一樣,橫屏時候兩邊則會留下變暗的區(qū)域。
 
  UIModalPresentationFormSheet這種模式下,presented VC的高度和寬度均會小于屏幕尺寸,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(彈出時的動畫風格)
 
  通過設置設置presented VC的modalTransitionStyle屬性,我們可以設置彈出presented VC時場景切換動畫的風格,其定義如下:
復制代碼 代碼如下:

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

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

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

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

相關文章

  • ios端ijkplayer編譯教程

    ios端ijkplayer編譯教程

    下面小編就為大家分享一篇ios端ijkplayer編譯教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 運用iOS教你輕松制作音樂播放器

    運用iOS教你輕松制作音樂播放器

    這篇文章主要教大家如何運用iOS輕松制作音樂播放器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • iOS實現(xiàn)自定義日期選擇器示例

    iOS實現(xiàn)自定義日期選擇器示例

    本篇文章主要介紹了iOS實現(xiàn)自定義日期選擇器示例,可以顯示年月日時分,非常具有實用價值,需要的朋友可以參考下。
    2017-02-02
  • iOS中使用Fastlane實現(xiàn)自動化打包和發(fā)布

    iOS中使用Fastlane實現(xiàn)自動化打包和發(fā)布

    Fastlane是一套使用Ruby寫的自動化工具集,用于iOS和Android的自動化打包、發(fā)布等工作,可以節(jié)省大量的時間。下面給大家介紹ios fastlane 自動化打包和發(fā)布的安裝方法,需要的朋友參考下吧
    2017-05-05
  • iOS中關于UIWindow和statusbar的設置問題

    iOS中關于UIWindow和statusbar的設置問題

    最近在做開發(fā)時要做一個類似于UIAlertView的控件,做法是創(chuàng)建一個基于UIView的類,在里面進行自定義控件的設置,為了盡量模仿UIAlertView,在這個類里面創(chuàng)建了一個新的UIWindow并將self顯示到這個window上
    2017-03-03
  • iOS正確監(jiān)聽手機靜音鍵和側邊音量鍵的方法示例

    iOS正確監(jiān)聽手機靜音鍵和側邊音量鍵的方法示例

    這篇文章主要給大家介紹了關于iOS正確監(jiān)聽手機側邊音量鍵的相關資料,并且給大家分享了ios監(jiān)聽靜音鍵的示例代碼,文中介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-11-11
  • iOS 讀取URL圖片并存儲到本地的實例

    iOS 讀取URL圖片并存儲到本地的實例

    下面小編就為大家?guī)硪黄猧OS 讀取URL圖片并存儲到本地的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • IOS中用正則表達式判斷輸入的內容為8-16位且同時包含數(shù)字和字母

    IOS中用正則表達式判斷輸入的內容為8-16位且同時包含數(shù)字和字母

    這篇文章主要介紹了IOS中用正則表達式判斷輸入的內容為8-16位且同時包含數(shù)字和字母,需要的朋友可以參考下
    2017-06-06
  • ios開發(fā)UITableViewCell圖片加載優(yōu)化詳解

    ios開發(fā)UITableViewCell圖片加載優(yōu)化詳解

    這篇文章主要為大家介紹了ios開發(fā)UITableViewCell圖片加載優(yōu)化的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • iOS模仿微信長按識別二維碼的多種方式

    iOS模仿微信長按識別二維碼的多種方式

    這篇文章主要介紹了iOS模仿微信長按識別二維碼的兩種方式,文章第二種方式是識別網(wǎng)頁中的二維碼,具體思路詳解大家參考下本文
    2017-07-07

最新評論

灵璧县| 海安县| 博野县| 自治县| 周至县| 行唐县| 类乌齐县| 方城县| 巨野县| 武冈市| 蓬莱市| 内乡县| 买车| 西平县| 万盛区| 丹东市| 洪雅县| 昌乐县| 皮山县| 贵德县| 五指山市| 同江市| 邢台市| 宁津县| 通州市| 大名县| 海宁市| 葵青区| 揭阳市| 本溪| 宜阳县| 大港区| 延长县| 西城区| 台江县| 敦煌市| 开封县| 来凤县| 晋州市| 故城县| 唐河县|