iOS 父视图控制器下添加多个子视图控制器进行切换

2019-04-11  本文已影响0人  我是啊梁

1.父视图控制器使用addChildViewController进行添加子视图控制器

2.父视图控制器的view添加子视图控制器的view,子视图调用didMoveToParentViewController 用于显示子视图控制器的界面

3.父视图控制器使用transitionFromViewController 对新旧两个子视图控制器进行切换

4.代码大概示例

    SSCLotteryViewController *ssc = [[SSCLotteryViewController alloc] init];

    [self addChildViewController:ssc];

    [self.view addSubview:ssc.view];

    [sscdidMoveToParentViewController:self];

- (void)replaceOldViewCroller:(BaseViewController*)oldViewController newViewController:(BaseViewController*)newViewController{

    //将新的子视图先添加到父视图上

  //  [self addChildViewController:newViewController];

   //这个方法是负责对子视图进行切换的, 有几个参数, 前两个参数是切换前子视图和切换后子视图, 这个方法有个条件, 就是一定要两个视图都是当前父视图的子视图才可以切换, 所以在上面才会先添加子视图, 后面的参数都应该很熟悉了, duration延时, options选项, 可以将动画的枚举类型给他, animations更不用说了, 动画效果, 闭包的bool参数finish代表的是切换是否成功

     [self transitionFromViewController:oldViewController toViewController:newViewController duration:.3 options:UIViewAnimationOptionTransitionCrossDissolve  animations:nil completion:^(BOOL finished) {

         if(finished) {

            //切换后将老视图移除, 新的视图设置为当前视图

                [newViewControllerdidMoveToParentViewController:self];

                [oldViewControllerwillMoveToParentViewController:nil];

                self.currentViewController= newViewController;

               [self.view bringSubviewToFront:self.backgroundView];

               [self.view bringSubviewToFront:self.typeSelectView];

       }else{

             self.currentViewController= oldViewController;

             [self.view bringSubviewToFront:self.backgroundView];

             [self.view bringSubviewToFront:self.typeSelectView];

       }  }];

}

上一篇下一篇

猜你喜欢

热点阅读