自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ios5中UIViewController新使用方法

移動開發(fā) iOS
下面詳細(xì)介紹一下addChildViewController,一個ViewController可以添加多個子ViewController,但是這些子ViewController只有一個是顯示到父視圖中的,可以通過transitionFromViewController:toViewController:duration:options:animations:completion:這個方法轉(zhuǎn)換顯示的子視圖。同時加入相應(yīng)的動畫。

在iOS5中,ViewController中新添加了下面幾個方法:

  1. addChildViewController:  
  2. removeFromParentViewController  
  3. transitionFromViewController:toViewController:duration:options:animations:completion: 
  4. willMoveToParentViewController:  
  5. didMoveToParentViewController: 

下面詳細(xì)介紹一下addChildViewController,一個ViewController可以添加多個子ViewController,但是這些子ViewController只有一個是顯示到父視圖中的,可以通過transitionFromViewController:toViewController:duration:options:animations:completion:這個方法轉(zhuǎn)換顯示的子視圖。同時加入相應(yīng)的動畫。下面以一個例子來說明,最后實現(xiàn)的效果:

image

點擊其中的按鈕如下:

imageimageimageimage

下面詳細(xì)介紹一下上述效果的實現(xiàn):

  1. 創(chuàng)建項目,changeViewController。
  2. 添加相應(yīng)的viewController,MainViewController、FirstViewController、SecondViewController、ThirdViewController。如下圖:

image

3.把MainViewController添加到window中。

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  4.     // Override point for customization after application launch.  
  5.     MainViewController *mainViewController=[[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];  
  6.     self.window.rootViewController=mainViewController;  
  7.     [self.window makeKeyAndVisible];  
  8.     return YES;  

4.在MainViewController中添加三個按鈕,并且連接onClickbutton方法。

5.在MainViewController中添加三個子controller

  1. #pragma mark – View lifecycle - (void)viewDidLoad  
  2. {  
  3.     [super viewDidLoad];  
  4.     // Do any additional setup after loading the view from its nib.  
  5.      
  6.     FirstViewController *firstViewController=[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];  
  7.     [self addChildViewController:firstViewController];  
  8.      
  9.     SecondViewController *secondViewController=[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];  
  10.     [self addChildViewController:secondViewController];  
  11.      
  12.      
  13.     ThirdViewController *thirdViewController=[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];  
  14.     [self addChildViewController:thirdViewController];  
  15.      
  16.     [contentView addSubview:thirdViewController.view];  
  17.     currentViewController=thirdViewController;  

其中要把其中的一個子controller的view添加到根視圖中,這樣才能顯示出相應(yīng)的視圖。

6.點擊按鈕,切換視圖。

  1. -(IBAction)onClickbutton:(id)sender  
  2. {  
  3.     FirstViewController *firstViewController=[self.childViewControllers objectAtIndex:0];  
  4.     ThirdViewController *thirdViewController=[self.childViewControllers objectAtIndex:2];  
  5.     SecondViewController *secondViewController=[self.childViewControllers objectAtIndex:1];  
  6.     if ((currentViewController==firstViewController&&[sender tag]==1)||(currentViewController==secondViewController&&[sender tag]==2) ||(currentViewController==thirdViewController&&[sender tag]==3) ) {  
  7.         return;  
  8.     }  
  9.     UIViewController *oldViewController=currentViewController;  
  10.     switch ([sender tag]) {  
  11.         case 1:  
  12.         {  
  13.             NSLog(@"留言及回復(fù)");  
  14.             [self transitionFromViewController:currentViewController toViewController:firstViewController duration:4 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{  
  15.             }  completion:^(BOOL finished) {  
  16.                 if (finished) {  
  17.                     currentViewController=firstViewController;  
  18.                 }else{  
  19.                     currentViewController=oldViewController;  
  20.                 }  
  21.             }];  
  22. }  
  23.             break;  
  24.         case 2:  
  25.         {  
  26.             NSLog(@"生日提醒");  
  27.             [self transitionFromViewController:currentViewController toViewController:secondViewController duration:1 options:UIViewAnimationOptionTransitionFlipFromTop animations:^{  
  28.                  
  29.             }  completion:^(BOOL finished) {  
  30.                 if (finished) {  
  31.                   currentViewController=secondViewController;  
  32.                 }else{  
  33.                     currentViewController=oldViewController;  
  34.                 }  
  35.             }];  
  36.         }  
  37.             break;  
  38.         case 3:  
  39.         {  
  40.             NSLog(@"好友申請");  
  41.             [self transitionFromViewController:currentViewController toViewController:thirdViewController duration:1 options:UIViewAnimationOptionTransitionFlipFromBottom animations:^{  
  42.                  
  43.             }  completion:^(BOOL finished) {  
  44.                 if (finished) {  
  45.                      currentViewController=thirdViewController;  
  46.                 }else{  
  47.                     currentViewController=oldViewController;  
  48.                 }  
  49.             }];  
  50.         }  
  51.             break;  
  52.         default:  
  53.             break;  
  54.     }  

其中我把按鈕設(shè)置成不同的tag了。

這時候點擊按鈕,就可以切換子視圖了。

這樣寫的好處: 多個UIViewController之間切換可以添加動畫 當(dāng)內(nèi)存警告的時候,可以把當(dāng)前不是激活狀態(tài)的ViewController內(nèi)存釋放。

可以把代碼更好分開 項目源代碼:http://easymorse-iphone.googlecode.com/svn/trunk/changeViewController/

責(zé)任編輯:佚名 來源: 王軍的博客
相關(guān)推薦

2012-04-04 22:36:52

iOS5

2012-01-18 13:51:39

2018-06-20 10:34:56

堆棧iOSswift

2011-08-19 13:51:12

2011-09-19 15:42:33

TwitteriOS5

2013-07-25 14:12:53

iOS開發(fā)學(xué)習(xí)UITableView

2013-07-22 14:47:56

iOS開發(fā)iOS5中ASIHtt

2013-03-25 13:41:10

iOS5ARC內(nèi)存管理

2011-07-21 14:42:45

iOS UIViewCont 內(nèi)存

2010-10-08 14:27:25

JavascriptSplit

2011-06-14 10:18:58

QThread Qt 線程

2010-10-09 10:30:03

JS event

2011-08-09 14:25:43

蘋果iCloudiOS5

2011-06-09 10:51:53

iPhone 3GSiOS5蘋果

2011-08-16 14:59:31

IOS開發(fā)ViewDidUnloiOS 5

2012-05-27 20:21:40

2012-03-06 10:17:45

iOS SQLite3iOSSQLite3

2012-01-13 09:55:54

jQuery

2011-02-24 13:09:10

FireFTP

2011-07-21 15:05:14

iPhone 數(shù)據(jù)庫
點贊
收藏

51CTO技術(shù)棧公眾號