@@ -381,6 +381,10 @@ -(void)openDrawerSide:(MMDrawerSide)drawerSide animated:(BOOL)animated velocity:
381381// If animated is NO, then we need to handle all the appearance calls within this method. Otherwise,
382382// let the method calling this one handle proper appearance methods since they will have more context
383383-(void )setCenterViewController : (UIViewController *)centerViewController animated : (BOOL )animated {
384+ if ([self .centerViewController isEqual: centerViewController]) {
385+ return ;
386+ }
387+
384388 if (_centerContainerView == nil ){
385389 _centerContainerView = [[MMDrawerCenterContainerView alloc ] initWithFrame: self .childControllerContainerView.bounds];
386390 [self .centerContainerView setAutoresizingMask: UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
@@ -424,16 +428,22 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withC
424428 // If a side drawer isn't open, there is nothing to animate...
425429 animated = NO ;
426430 }
431+
432+ BOOL forwardAppearanceMethodsToCenterViewController = ([self .centerViewController isEqual: newCenterViewController] == NO );
427433 [self setCenterViewController: newCenterViewController animated: animated];
428434
429435 if (animated){
430436 [self updateDrawerVisualStateForDrawerSide: self .openSide percentVisible: 1.0 ];
431- [self .centerViewController beginAppearanceTransition: YES animated: animated];
437+ if (forwardAppearanceMethodsToCenterViewController) {
438+ [self .centerViewController beginAppearanceTransition: YES animated: animated];
439+ }
432440 [self
433441 closeDrawerAnimated: animated
434442 completion: ^(BOOL finished) {
435- [self .centerViewController endAppearanceTransition ];
436- [self .centerViewController didMoveToParentViewController: self ];
443+ if (forwardAppearanceMethodsToCenterViewController) {
444+ [self .centerViewController endAppearanceTransition ];
445+ [self .centerViewController didMoveToParentViewController: self ];
446+ }
437447 if (completion){
438448 completion (finished);
439449 }
@@ -450,6 +460,8 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
450460 if (self.openSide != MMDrawerSideNone &&
451461 animated){
452462
463+ BOOL forwardAppearanceMethodsToCenterViewController = ([self .centerViewController isEqual: newCenterViewController] == NO );
464+
453465 UIViewController * sideDrawerViewController = [self sideDrawerViewControllerForSide: self .openSide];
454466
455467 CGFloat targetClosePoint = 0 .0f ;
@@ -468,7 +480,9 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
468480 [self setAnimatingDrawer: animated];
469481
470482 UIViewController * oldCenterViewController = self.centerViewController ;
471- [oldCenterViewController beginAppearanceTransition: NO animated: animated];
483+ if (forwardAppearanceMethodsToCenterViewController ){
484+ [oldCenterViewController beginAppearanceTransition: NO animated: animated];
485+ }
472486 newCenterRect.origin .x = targetClosePoint;
473487 [UIView
474488 animateWithDuration: firstDuration
@@ -482,10 +496,12 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
482496
483497 CGRect oldCenterRect = self.centerContainerView .frame ;
484498 [self setCenterViewController: newCenterViewController animated: animated];
485- [oldCenterViewController endAppearanceTransition ];
486499 [self .centerContainerView setFrame: oldCenterRect];
487500 [self updateDrawerVisualStateForDrawerSide: self .openSide percentVisible: 1.0 ];
488- [self .centerViewController beginAppearanceTransition: YES animated: animated];
501+ if (forwardAppearanceMethodsToCenterViewController) {
502+ [oldCenterViewController endAppearanceTransition ];
503+ [self .centerViewController beginAppearanceTransition: YES animated: animated];
504+ }
489505 [sideDrawerViewController beginAppearanceTransition: NO animated: animated];
490506 [UIView
491507 animateWithDuration: [self animationDurationForAnimationDistance: CGRectGetWidth (self .childControllerContainerView.bounds)]
@@ -496,8 +512,10 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
496512 [self updateDrawerVisualStateForDrawerSide: self .openSide percentVisible: 0.0 ];
497513 }
498514 completion: ^(BOOL finished) {
499- [self .centerViewController endAppearanceTransition ];
500- [self .centerViewController didMoveToParentViewController: self ];
515+ if (forwardAppearanceMethodsToCenterViewController) {
516+ [self .centerViewController endAppearanceTransition ];
517+ [self .centerViewController didMoveToParentViewController: self ];
518+ }
501519 [sideDrawerViewController endAppearanceTransition ];
502520 [self resetDrawerVisualStateForDrawerSide: self .openSide];
503521
0 commit comments