中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在子視圖中獲取父視圖的ViewController?//模態推出

發布時間:2020-07-12 09:06:01 來源:網絡 閱讀:12977 作者:Im劉亞芳 欄目:開發技術
子view添加到有controller的父view時,在點擊子view中的什么東西時,如果要調用父view的controller導航push到一個新viewController,那么直接用下面的代碼就可以了(本人也遇到這個問題,以下代碼在IOS7和IOS6.1上都親測通過)
//獲取view的controller
- (UIViewController *)viewController
{
    for (UIView* next = [self superview]; next; next = next.superview) {
        UIResponder *nextResponder = [next nextResponder];
        if ([nextResponder isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)nextResponder;
        }
    }
    return nil;
}
//點擊提交按鈕
-(void)buttonPress
{
    ElectronController *ec=[[ElectronController alloc]init];
    [[self viewController].navigationController pushViewController: ec animated:YES];
    [ec release];
}


-(void)buttonDown:(id)sender{
    ViewTwo *two = [[ViewTwo alloc]init];
    two.delegate = self;
    two.modalPresentationStyle=UIModalPresentationFullScreen;
    two.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;//彈出時的動畫風格 對彈出目標頁面設置
    [self presentModalViewController:two animated:YES];
}


//[self presentModalViewController:infoViewController animated:YES];//備注1
[self presentViewController:infoViewController animated:YES completion:^{//備注2
NSLog(@"show InfoView!");
}];

//presentedViewController
NSLog(@"self.presentedViewController=%@",self.presentedViewController);//備注3
}

//備注1、備注2:備注中的方法已經廢棄,被備注2中的presentViewController代替;參數completion實現一個回調,當MainViewController的viewDidDisappear調用之后,該回調會被調用。 
備注3:在MainViewController中調用self.presentedViewController,返回的是由MainViewController present出的視圖控制器,


以上是代碼實例 下面是網上抄來無聊時看看的,補充補充的


一、主要用途

  彈出模態ViewController是IOS變成中很有用的一個技術,UIKit提供的一些專門用于模態顯示的ViewController,如UIImagePickerController等。彈出模態ViewController主要使用于一下這幾種情形:

  1、收集用戶輸入信息

  2、臨時呈現一些內容

  3、臨時改變工作模式

  4、相應設備方向變化(用于針對不同方向分別是想兩個ViewController的情況)

  5、顯示一個新的view層級

  這幾種情形都會暫時中斷程序正常的執行流程,主要作用是收集或者顯示一些信息。

二、幾個概念和常用設置

1、presenting view controller Vs presented view controller

  當我們在view controller A中模態顯示view controller B的時候,A就充當presenting view controller(彈出VC),而B就是presented view controller(被彈出VC)。官方文檔建議這兩者之間通過delegate實現交互,如果使用過UIImagePickerController從系統相冊選取照片或者拍照,我們可以發現p_w_picpathPickerController和彈出它的VC之間就是通過UIImagePickerControllerDelegate實現交互的。因此我們在實際應用用,最好也遵守這個原則,在被彈出的VC中定義delegate,然后在彈出VC中實現該代理,這樣就可以比較方便的實現兩者之間的交互。

2、Modal Presentation Styles(彈出風格)

  通過設置presenting VC的modalPresentationStyle屬性,我們可以設置彈出View Controller時的風格,有以下四種風格,其定義如下:

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

  UIModalPresentationFullScreen代表彈出VC時,presented VC充滿全屏,如果彈出VC的wantsFullScreenLayout設置為YES的,則會填充到狀態欄下邊,否則不會填充到狀態欄之下。

  UIModalPresentationPageSheet代表彈出是彈出VC時,presented VC的高度和當前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同,剩余未覆蓋區域將會變暗并阻止用戶點擊,這種彈出模式下,豎屏時跟UIModalPresentationFullScreen的效果一樣,橫屏時候兩邊則會留下變暗的區域。

  UIModalPresentationFormSheet這種模式下,presented VC的高度和寬度均會小于屏幕尺寸,presented VC居中顯示,四周留下變暗區域。

  UIModalPresentationCurrentContext這種模式下,presented VC的彈出方式和presenting VC的父VC的方式相同。

  這四種方式在iPad上面統統有效,但在iPhone和iPod touch上面系統始終已UIModalPresentationFullScreen模式顯示presented VC。

3、Modal Transition Style(彈出時的動畫風格)

  通過設置設置presenting VC的modalTransitionStyle屬性,我們可以設置彈出presented VC時場景切換動畫的風格,其定義如下:

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

  我們可以看到有從底部滑入,水平翻轉進入,交叉溶解以及翻頁這四種風格可選。這四種風格在不受設備的限制,即不管是iPhone還是iPad都會根據我們指定的風格顯示轉場效果。

4、Dismiss Modal ViewController(消失彈出的VC)

  消失presented VC,我們可以通過調用以下兩個函數中的任何一個來完成

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


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卢湾区| 富顺县| 佛冈县| 福安市| 沂南县| 陵水| 长治市| 浑源县| 托里县| 永登县| 高阳县| 江华| 永州市| 兰溪市| 娱乐| 卫辉市| 鄂温| 济南市| 贵阳市| 五大连池市| 伊川县| 玉屏| 新乐市| 萝北县| 南城县| 延安市| 元江| 治多县| 泽州县| 青岛市| 闸北区| 颍上县| 元氏县| 富裕县| 特克斯县| 闻喜县| 德保县| 濮阳市| 辉南县| 大荔县| 哈尔滨市|