<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      關(guān)于presentModalViewController的一點兒思考

      關(guān)于presentModalViewController的一點兒思考

        有一個多月沒有寫blog了,手有點兒生。今天沒事兒,突然想起以前文檔中看到關(guān)于彈出模態(tài)對話框的一個知識點,于是想著何不動手驗證一下。

        我們都知道使用彈出模態(tài)視圖時有兩個重要的函數(shù)presentModalViewController和dismissModalViewControllerAnimated,前面一個函數(shù)相信大家使用起來都沒有問題,我想說的是后面這個函數(shù)dismissModalViewControllerAnimated,通過字面我們可以看出它的意思就是使彈出視圖消失。我們設(shè)A彈出B,那么A就是presenting一方,B就是presented一方。那么該由誰來調(diào)用這個方法呢,是彈出的一方,還是被彈出的那一方呢,為此找到官方文檔中如下解釋:

      The presenting view controller is responsible for dismissing the view controller it presented. If you call this method on the presented view controller itself, however, it automatically forwards the message to the presenting view controller.

        通過解釋我們可以看出,presenting一方是負責讓彈出模態(tài)視圖消失的,但是系統(tǒng)在此處幫我們做了一個遍歷就是當我們在被彈出一方調(diào)用該函數(shù)時候,系統(tǒng)會自動把這個消息傳遞到彈出它的那個VC中。

        下面我們在思考個問題,如果A彈出B,B又彈出C,此時我們通過B調(diào)用dismissModalViewControllerAnimated方法,到底是只有C被dismiss還是B和C一起被dismiss呢?

        我寫了一個小程序驗證了一下,程序如下:

       1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
       2 {
       3     self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
       4     // Override point for customization after application launch.
       5     _svVCA = [[SvViewController alloc] initWithNibName:nil bundle:nil];
       6     self.viewController = [[[UINavigationController alloc] initWithRootViewController:_svVCA] autorelease];
       7     [_svVCA release];
       8     _svVCA.view.backgroundColor = [UIColor clearColor];
       9     _svVCA.contentStr = @"A";
      10     
      11     self.window.rootViewController = self.viewController;    
      12     [self.window makeKeyAndVisible];
      13     
      14     _svVCB = [[SvViewController alloc] init];
      15     _svVCB.contentStr = @"B";
      16     [_svVCA presentModalViewController:_svVCB animated:NO];
      17     [_svVCB release];
      18     
      19     _svVCC = [[SvViewController alloc] init];
      20     _svVCC.contentStr = @"C";
      21     [_svVCB presentModalViewController:_svVCC animated:NO];
      22     [_svVCC release];
      23     
      24     [_svVCB dismissModalViewControllerAnimated:NO];
      25     //[_svVCB dismissModalViewControllerAnimated:NO];
      26     
      27     return YES;
      28 }

        上面程序中我們可以看出,一開始我們創(chuàng)建一個A,然后添加到window中,然后彈出B,B在彈出C,接著我們就調(diào)用[_svVCB dismissModalViewControllerAnimated:NO];

        運行結(jié)果如下:

          

        上圖中最左邊的圖是沒有調(diào)用任何dismiss的情況下的結(jié)果,中間這幅圖是通過B調(diào)用一次dismissModalViewControllerAnimated的結(jié)果,右邊的圖是連著通過B調(diào)用兩次dismissModalViewControllerAnimated的結(jié)果。

        通過程序測試我們可以發(fā)現(xiàn)當一個VC即是被彈出方(被A彈出),也是彈出方(彈出C)的時候,調(diào)用dismiss的時候是直接將其彈出的VC消失掉,而不是傳遞該消息到彈出它的VC去,只有當該VC沒有彈出別的VC的時候才會傳遞消息到彈出它的VC去。這塊兒可能說的有點兒繞,簡單的說就是無私原則,就是B已經(jīng)占了資源了,當接到釋放命令的時候,就必須的先交出自己的,自己沒有占有資源的時候才能嘗試向上一級發(fā)出申請。

      posted on 2012-10-14 22:15  一片-楓葉  閱讀(9507)  評論(1)    收藏  舉報

      主站蜘蛛池模板: 免费又爽又大又高潮视频| 99久久精品久久久久久婷婷| 国产伦精品一区二区亚洲| 亚洲一区国色天香| 亚洲色偷偷偷网站色偷一区| 日韩精品一区二区三区激情视频| 91孕妇精品一区二区三区| 女人被狂躁的高潮免费视频| 亚洲最大天堂在线看视频| 亚洲精品日韩在线观看| 国产AV无码专区亚洲AV紧身裤| 国产精品国产亚洲区久久| 欧美性69式xxxx护士| 国产一区二区不卡在线| 性欧美老人牲交xxxxx视频| 日韩精品一区二区三免费| 久久人与动人物a级毛片 | 性做久久久久久久久| 鲁鲁网亚洲站内射污| 最新亚洲av日韩av二区| 亚洲精品国产自在现线最新 | 国产99视频精品免视看9| 国产精品成人无码久久久| 亚洲av日韩av一区久久| 亚洲一区三区三区成人久| 乌克兰丰满女人a级毛片右手影院 人妻中文字幕不卡精品 | 日韩午夜一区二区福利视频| 丰满岳乱妇三级高清| 国产亚洲av手机在线观看| 亚洲日韩国产精品第一页一区 | 亚洲熟妇少妇任你躁在线观看无码| 无码人妻少妇色欲av一区二区| 日韩人妻无码精品久久| 欧美日韩国产综合草草| 亚洲欧美日韩综合在线丁香| 孕妇特级毛片ww无码内射| 搡老熟女老女人一区二区 | 99久久夜色精品国产亚洲| 亚洲AⅤ天堂AV天堂无码| 亚洲欧美v国产一区二区| 免费国产高清在线精品一区|