1.父視圖控制器使用addChildViewController進(jìn)行添加子視圖控制器
2.父視圖控制器的view添加子視圖控制器的view坚弱,子視圖調(diào)用didMoveToParentViewController 用于顯示子視圖控制器的界面
3.父視圖控制器使用transitionFromViewController 對(duì)新舊兩個(gè)子視圖控制器進(jìn)行切換
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];
?? //這個(gè)方法是負(fù)責(zé)對(duì)子視圖進(jìn)行切換的, 有幾個(gè)參數(shù), 前兩個(gè)參數(shù)是切換前子視圖和切換后子視圖, 這個(gè)方法有個(gè)條件, 就是一定要兩個(gè)視圖都是當(dāng)前父視圖的子視圖才可以切換, 所以在上面才會(huì)先添加子視圖, 后面的參數(shù)都應(yīng)該很熟悉了, duration延時(shí), options選項(xiàng), 可以將動(dòng)畫(huà)的枚舉類型給他, animations更不用說(shuō)了, 動(dòng)畫(huà)效果, 閉包的bool參數(shù)finish代表的是切換是否成功
?? ? [self transitionFromViewController:oldViewController toViewController:newViewController duration:.3 options:UIViewAnimationOptionTransitionCrossDissolve? animations:nil completion:^(BOOL finished) {
?? ? ? ? if(finished) {
? ? ? ? ? ? //切換后將老視圖移除, 新的視圖設(shè)置為當(dāng)前視圖
? ? ? ? ? ? ? ? [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];
?? ? ? }? }];
}