addChildViewController 与presentViewController、pushViewController跳转区别

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion

MainVC *mainVC = [[MainVC alloc] init];

[self presentViewController:mainVC animated:YES completion:nil];

这种方式一般出现在需要使用者完成某件事情,如输入密码、增加资料等操作后,才能(回到跳转前的控制器)继续。例如系统的WIFI连接输入密码提示。默认动画是从下至上。

 

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

这种方式一般是使用者浏览资料,继而可以前进到下一个页面或回到上一个页面。默认动画是从右至左。

 

- (void)addChildViewController:(UIViewController *)childController

这个方法出现在iOS5以后,通过它即使不使用NavigationController也能够实现view hierarchy。有以下优点:

1.页面逻辑很清晰,相应的View对应相应的ViewController。
2.当某个子View没有显示时,将不会被Load,减少了内存的使用。
3.当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。


/  切换各个标签内容
- (void)replaceController:(UIViewController *)oldController newController:(UIViewController *)newController
{
  /**
   *			着重介绍一下它
   *  transitionFromViewController:toViewController:duration:options:animations:completion:
   *  fromViewController	  当前显示在父视图控制器中的子视图控制器
   *  toViewController		将要显示的姿势图控制器
   *  duration				动画时间(这个属性,old friend 了 O(∩_∩)O)
   *  options				 动画效果(渐变,从下往上等等,具体查看API)
   *  animations			  转换过程中得动画
   *  completion			  转换完成
   */
  
  [self addChildViewController:newController];
  [self transitionFromViewController:oldController toViewController:newController duration:2.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:nil completion:^(BOOL finished) {
        
    if (finished) {
          
      [newController didMoveToParentViewController:self];
      [oldController willMoveToParentViewController:nil];
      [oldController removeFromParentViewController];
      self.currentVC = newController;
        
    }else{
          
      self.currentVC = oldController;
        
    }
  }];
}
  1. - (void)didClickHeadButtonAction:(UIButton *)button  
  2. {  
  3.     //  点击处于当前页面的按钮,直接跳出  
  4.     if ((self.currentVC == self.firstVC && button.tag == 100)||(self.currentVC == self.secondVC && button.tag == 101.)) {  
  5.         return;  
  6.     }else{  
  7.       
  8.         //  展示2个,其余一样,自行补全噢  
  9.         switch (button.tag) {  
  10.             case 100:  
  11.                 [self replaceController:self.currentVC newController:self.firstVC];  
  12.                 break;  
  13.             case 101:  
  14.                 [self replaceController:self.currentVC newController:self.secondVC];  
  15.                 break;  
  16.             case 102:  
  17.                 //.......  
  18.                 break;  
  19.             case 103:  
      default:
        break;
    }
  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值