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];
} }];
}
网友评论