成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iPhone開發之利用ModalViewController切換View

移動開發 iOS
如果 view 的數量比較少,且顯示領域為全屏的時候,用 ModalViewController 就比較合適(比如需要用戶輸入信息的view,結束后自動回復到之前的view)。今天我們就看看 ModalViewController 的創建方法。

iPhone開發之利用ModalViewController切換View是本文要介紹的內容,當程序中含有多個 view,需要在之間切換的時候,可以使用 UINavigationController,或者是 ModalViewController。UINabigationController 是通過向導條來切換多個 view

而如果 view 的數量比較少,且顯示領域為全屏的時候,用 ModalViewController 就比較合適(比如需要用戶輸入信息的view,結束后自動回復到之前的view)。今天我們就看看 ModalViewController 的創建方法。

ModalViewController 并不像 UINavigationController 是一個專門的類,使用 UIViewController 的 presentModalViewController 方法指定之后就是 ModalViewController 了。

這里使用上兩回做成的 CustomViewController(由UIViewController繼承)來實現 ModalViewController 的實例。

首先,準備 ModalViewController 退出時的函數。調用 UIViewController 的 dismissModalViewController:Animated: 方法就可以了,如下所示:

  1.  // 這里按鈕按下的時候退出 ModalViewController  
  2. -(void)dismiss:(id)inSender {  
  3.     //  如果是被 presentModalViewController 以外的實例調用,parentViewController 將是nil,下面的調用無效  
  4.     [self.parentViewController dismissModalViewControllerAnimated:YES];  
  5. }  

接下來,生成另一個 CustomViewController 的實例,用來表示 ModalViewController,并將其對應的 view 設置成紅色。然后傳遞給 presentModalViewController: Animated: 顯示 ModalViewController 的 view。

  1.  - (void)applicationDidFinishLaunching:(UIApplication *)application {  
  2.     controller = [[CustomViewController alloc] init];  
  3.     [window addSubview:controller.view];  
  4.     [window makeKeyAndVisible];  
  5.     // 生成 ModalViewController  
  6.     CustomViewController* controllerB = [[CustomViewController alloc] init];  
  7.     // 設置 view 的背景為紅色  
  8.     controllerB.view.backgroundColor = [UIColor redColor];  
  9.     // 顯示 ModalViewController view  
  10.     [controller presentModalViewController:controllerB animated:YES];  
  11.     // presentModalViewController 已經被 controller 管理,這里可以釋放該實例了  
  12.     [controllerB release];  
  13. }  

編譯執行以后,首先啟動的是紅色背景的 ModalViewController view、按下按鈕后恢復到藍色背景的通常 view 上。

也可以在顯示 ModalViewController view 之前設置 UIViewContrller 的 modalTransitionStyle 屬性,使其以動畫形式顯示。

  1. controllerB.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;  

iPhone開發之利用ModalViewController切換View

以上的實現只是單一地實現了 ModalViewController view 的功能,除了程序開始提醒用戶一些信息外什么也做不了。另外由于是放入了 applicationDidFinishLaunching 中的原因,也不能反復的顯示。另外,在 ModalViewController view 上設置的內容也不能反映到原來的 view 上。

接下來我們將實現這些功能。

首先,從 ModalViewController view 退出的時候,需要通知原先的 view。這里使用 iPhone/Cocoa 應用程序中經常使用的Delegate 設計模式(也是推薦使用的)。

實際上,系統所提供的圖像選擇控制類 UIImagePickerController

或者是參照地址簿時的ABPeoplePickerNavigationController 類,都用到了 Delegate 模式。基于上一講的中的例子,這里我們追加為3個按鈕,分別是綠色,灰色和取消。

  1. - (void)viewDidLoad {  
  2.    [super viewDidLoad];  
  3.    self.view.backgroundColor = [UIColor blueColor];  
  4.    UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  5.    button.frame = CGRectMake(100,100,100,100);  
  6.    button.tag = 1;  
  7.    [button setTitle:@"綠色" forState:UIControlStateNormal];  
  8.    //  按鈕事件對應函數  
  9.    [button addTarget:self action:@selector(dismiss:)  
  10.        forControlEvents:UIControlEventTouchUpInside];  
  11.    [self.view addSubview:button];  
  12.  
  13.    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  14.    button.frame = CGRectMake(100,200,100,100);  
  15.    button.tag = 2;  
  16.    [button setTitle:@"灰色" forState:UIControlStateNormal];  
  17.    //  按鈕事件對應函數  
  18.    [button addTarget:self action:@selector(dismiss:)  
  19.        forControlEvents:UIControlEventTouchUpInside];  
  20.    [self.view addSubview:button];  
  21.  
  22.    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  23.    button.frame = CGRectMake(100,300,100,100);  
  24.    button.tag = 0;  
  25.    [button setTitle:@"取消" forState:UIControlStateNormal];  
  26.    //  按鈕事件對應函數  
  27.    [button addTarget:self action:@selector(dismiss:)  
  28.        forControlEvents:UIControlEventTouchUpInside];  
  29.    [self.view addSubview:button];  
  30.   

程序啟動的時候依然是先顯示 ModalViewController view,按下任何一個按鈕,將關閉該view。按下“綠色”按鈕,設置背景為綠色,按下“灰色”按鈕時,設置背景為灰色。“取消”的時候什么也不做。

委托處理用下面的函數實現,當參數 inColor 為 nil 的時候代表取消。

  1. -(void)selectColor:(UIColor*)inColor;  

委托代理的實例用 id 變量表示。

  1.  @interface CustomViewController : UIViewController {  
  2.     id  colorSelectDelegate;  
  3. }  

設置該變量的函數如下。

  1.  -(void)setColorSelectDelegate:(id)inDelegate {  
  2.     colorSelectDelegate = inDelegate;  
  3. }  

另外如上面 viewDidLoad 所示,按鈕的 tag 分別為0、1、2。按鈕按下時調用的函數中由不同的 tag 來發送不同的 UIColor實例到 colorSelectDelegate 上。

  1.  -(void)dismiss:(id)inSender {  
  2.     UIView* view = (UIView*)inSender;  
  3.     UIColor* requestColor = nil;  
  4.     if (view.tag == 1)  
  5.         requestColor = [UIColor greenColor];  
  6.     if (view.tag == 2)  
  7.         requestColor = [UIColor grayColor];  
  8.     [colorSelectDelegate selectColor:requestColor];  
  9. }  

這是不使用 UIButton* 而是用 UIView* ,是因為 tag 屬性被定義在 UIView 類中,不需要必須轉換為 UIButton 類。

另外這樣一來,該函數在 UIButton 以外的情況下也能被使用。

如果想檢查 id 是什么類性的可以使用 isKindOfClass: 方法。接收到具體的參數 inColor 更換背景色,并關閉 ModalViewController view。

  1.  -(void)selectColor:(UIColor*)inColor {  
  2.     if (inColor != nil)  
  3.         self.view.backgroundColor = inColor;  
  4.     [self dismissModalViewControllerAnimated:YES];  
  5. }  

另外,在調用 presentModalViewController 之前(顯示 ModalViewController view 之前),需要設定委托的實例。

  1. - (void)applicationDidFinishLaunching:(UIApplication *)application {  
  2.    controller = [[CustomViewController alloc] init];  
  3.    [window addSubview:controller.view];  
  4.    [window makeKeyAndVisible];  
  5.    //  創建 ModalViewController view 的 Controller  
  6.    CustomViewController* controllerB = [[CustomViewController alloc] init];  
  7.    //  設置背景色為紅色  
  8.    controllerB.view.backgroundColor = [UIColor redColor];  
  9.    //  設置委托實例  
  10.    [controllerB setColorSelectDelegate:controller];  
  11.    //  顯示 ModalViewController view  
  12.    [controller presentModalViewController:controllerB animated:YES];  
  13.    [controllerB release];  
  14.   

編譯一下,程序啟動后顯示紅色背景的 ModalViewController view,點擊綠色按鈕后,原先的view的背景變為綠色,點擊灰色,顯示灰色的背景,而點擊取消,那么將顯示原先藍色的背景。

這樣的形式,就是將按鈕的動作委托給原先view的 Controller 來處理了。根據送來的 UIColor 來設置不同的背景色。

小結:iPhone開發之利用ModalViewController切換View的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-25 15:02:17

Lua環境搭建EditPlus

2016-02-25 10:18:29

2011-09-01 10:31:16

ubuntuwindows

2011-07-25 14:54:53

iPhone iPhone開發 View

2011-07-03 18:59:27

流量

2011-08-18 17:32:55

iPhone開發Table Cell

2017-02-21 08:47:22

2011-07-06 17:53:40

iPhone SDK Xcode

2011-08-22 13:52:20

iPhone開發View

2011-07-25 18:02:51

iPhone LibFetion 移植

2009-08-20 10:55:59

2011-07-06 17:34:47

iPhone

2011-07-08 10:58:47

2011-08-10 15:48:10

iPhone網絡

2011-07-08 14:58:16

iPhone Xcode iOS

2011-07-19 09:46:38

2011-07-19 09:58:36

2011-08-10 15:58:58

iPhone視頻

2011-08-10 18:24:22

iPhone 圖形 繪圖

2011-08-12 09:52:35

iPhone開發TableviewUITextField
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久亚洲一区 | 91精品国产乱码久久久久久 | av资源网站 | 色伊人 | 精品欧美一区二区中文字幕视频 | 日韩免费一区二区 | 精品久久香蕉国产线看观看亚洲 | 成人性视频免费网站 | 欧洲视频一区二区 | 久久久精品一区 | 久久99精品久久久久蜜桃tv | 91精品国产手机 | 亚洲一区二区三区免费观看 | www.日韩| 国产91视频一区二区 | 国产91久久久久久 | 日韩视频国产 | 影音先锋成人资源 | 国产美女福利在线观看 | 伊人久久在线观看 | 日韩视频在线播放 | 99久久精品国产一区二区三区 | 羞羞视频在线免费 | 久久综合九色综合欧美狠狠 | 亚洲欧美激情网 | 久久久精 | 秋霞国产 | 精品国产一区二区三区日日嗨 | 青青久久久 | 国产欧美日韩久久久 | 黄色毛片黄色毛片 | 欧美1区2区 | 日韩免费网站 | 久久免费高清视频 | 四虎影音 | 成人欧美一区二区三区 | 国产黄色av网站 | 国产精品视频久久久久 | 国产精品久久网 | 国产乱肥老妇国产一区二 | 国产视频福利在线观看 |