美文网首页
iOS 父视图控制器下添加多个子视图控制器进行切换

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

作者: 我是啊梁 | 来源:发表于2019-04-11 10:15 被阅读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];

           }  }];

    }

    相关文章

      网友评论

          本文标题:iOS 父视图控制器下添加多个子视图控制器进行切换

          本文链接:https://www.haomeiwen.com/subject/tbvziqtx.html