子view添加到有controller的父view時,在點(diǎn)擊子view中的什么東西時,如果要調(diào)用父view的controller導(dǎo)航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; } //點(diǎn)擊提交按鈕 -(void)buttonPress { ElectronController *ec=[[ElectronController alloc]init]; [[self viewController].navigationController pushViewController: ec animated:YES]; [ec release]; }站在用戶的角度思考問題,與客戶深入溝通,找到太子河網(wǎng)站設(shè)計(jì)與太子河網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋太子河地區(qū)。
-(void)buttonDown:(id)sender{ ViewTwo *two = [[ViewTwo alloc]init]; two.delegate = self; two.modalPresentationStyle=UIModalPresentationFullScreen; two.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;//彈出時的動畫風(fēng)格 對彈出目標(biāo)頁面設(shè)置 [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:備注中的方法已經(jīng)廢棄,被備注2中的presentViewController代替;參數(shù)completion實(shí)現(xiàn)一個回調(diào),當(dāng)MainViewController的viewDidDisappear調(diào)用之后,該回調(diào)會被調(diào)用。 備注3:在MainViewController中調(diào)用self.presentedViewController,返回的是由MainViewController present出的視圖控制器,
以上是代碼實(shí)例 下面是網(wǎng)上抄來無聊時看看的,補(bǔ)充補(bǔ)充的
一、主要用途
彈出模態(tài)ViewController是IOS變成中很有用的一個技術(shù),UIKit提供的一些專門用于模態(tài)顯示的ViewController,如UIImagePickerController等。彈出模態(tài)ViewController主要使用于一下這幾種情形:
1、收集用戶輸入信息
2、臨時呈現(xiàn)一些內(nèi)容
3、臨時改變工作模式
4、相應(yīng)設(shè)備方向變化(用于針對不同方向分別是想兩個ViewController的情況)
5、顯示一個新的view層級
這幾種情形都會暫時中斷程序正常的執(zhí)行流程,主要作用是收集或者顯示一些信息。
二、幾個概念和常用設(shè)置
1、presenting view controller Vs presented view controller
當(dāng)我們在view controller A中模態(tài)顯示view controller B的時候,A就充當(dāng)presenting view controller(彈出VC),而B就是presented view controller(被彈出VC)。官方文檔建議這兩者之間通過delegate實(shí)現(xiàn)交互,如果使用過UIImagePickerController從系統(tǒng)相冊選取照片或者拍照,我們可以發(fā)現(xiàn)p_w_picpathPickerController和彈出它的VC之間就是通過UIImagePickerControllerDelegate實(shí)現(xiàn)交互的。因此我們在實(shí)際應(yīng)用用,最好也遵守這個原則,在被彈出的VC中定義delegate,然后在彈出VC中實(shí)現(xiàn)該代理,這樣就可以比較方便的實(shí)現(xiàn)兩者之間的交互。
2、Modal Presentation Styles(彈出風(fēng)格)
通過設(shè)置presenting VC的modalPresentationStyle屬性,我們可以設(shè)置彈出View Controller時的風(fēng)格,有以下四種風(fēng)格,其定義如下:
typedef enum { UIModalPresentationFullScreen = 0, UIModalPresentationPageSheet, UIModalPresentationFormSheet, UIModalPresentationCurrentContext, } UIModalPresentationStyle;
UIModalPresentationFullScreen代表彈出VC時,presented VC充滿全屏,如果彈出VC的wantsFullScreenLayout設(shè)置為YES的,則會填充到狀態(tài)欄下邊,否則不會填充到狀態(tài)欄之下。
UIModalPresentationPageSheet代表彈出是彈出VC時,presented VC的高度和當(dāng)前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同,剩余未覆蓋區(qū)域?qū)儼挡⒆柚褂脩酎c(diǎn)擊,這種彈出模式下,豎屏?xí)r跟UIModalPresentationFullScreen的效果一樣,橫屏?xí)r候兩邊則會留下變暗的區(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(彈出時的動畫風(fēng)格)
通過設(shè)置設(shè)置presenting VC的modalTransitionStyle屬性,我們可以設(shè)置彈出presented VC時場景切換動畫的風(fēng)格,其定義如下:
typedef enum { UIModalTransitionStyleCoverVertical = 0, UIModalTransitionStyleFlipHorizontal, UIModalTransitionStyleCrossDissolve, UIModalTransitionStylePartialCurl, } UIModalTransitionStyle;
我們可以看到有從底部滑入,水平翻轉(zhuǎn)進(jìn)入,交叉溶解以及翻頁這四種風(fēng)格可選。這四種風(fēng)格在不受設(shè)備的限制,即不管是iPhone還是iPad都會根據(jù)我們指定的風(fēng)格顯示轉(zhuǎn)場效果。
4、Dismiss Modal ViewController(消失彈出的VC)
消失presented VC,我們可以通過調(diào)用以下兩個函數(shù)中的任何一個來完成
dismissModalViewControllerAnimated: // 將要廢棄,不贊成繼續(xù)使用dismissViewControllerAnimated:completion:
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享標(biāo)題:如何在子視圖中獲取父視圖的ViewController?//模態(tài)推出-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://jinyejixie.com/article36/gppsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站排名、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容