@@ -381,6 +381,10 @@ -(void)openDrawerSide:(MMDrawerSide)drawerSide animated:(BOOL)animated velocity:
381
381
// If animated is NO, then we need to handle all the appearance calls within this method. Otherwise,
382
382
// let the method calling this one handle proper appearance methods since they will have more context
383
383
-(void )setCenterViewController : (UIViewController *)centerViewController animated : (BOOL )animated {
384
+ if ([self .centerViewController isEqual: centerViewController]) {
385
+ return ;
386
+ }
387
+
384
388
if (_centerContainerView == nil ){
385
389
_centerContainerView = [[MMDrawerCenterContainerView alloc ] initWithFrame: self .childControllerContainerView.bounds];
386
390
[self .centerContainerView setAutoresizingMask: UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
@@ -424,16 +428,22 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withC
424
428
// If a side drawer isn't open, there is nothing to animate...
425
429
animated = NO ;
426
430
}
431
+
432
+ BOOL forwardAppearanceMethodsToCenterViewController = ([self .centerViewController isEqual: newCenterViewController] == NO );
427
433
[self setCenterViewController: newCenterViewController animated: animated];
428
434
429
435
if (animated){
430
436
[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
+ }
432
440
[self
433
441
closeDrawerAnimated: animated
434
442
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
+ }
437
447
if (completion){
438
448
completion (finished);
439
449
}
@@ -450,6 +460,8 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
450
460
if (self.openSide != MMDrawerSideNone &&
451
461
animated){
452
462
463
+ BOOL forwardAppearanceMethodsToCenterViewController = ([self .centerViewController isEqual: newCenterViewController] == NO );
464
+
453
465
UIViewController * sideDrawerViewController = [self sideDrawerViewControllerForSide: self .openSide];
454
466
455
467
CGFloat targetClosePoint = 0 .0f ;
@@ -468,7 +480,9 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
468
480
[self setAnimatingDrawer: animated];
469
481
470
482
UIViewController * oldCenterViewController = self.centerViewController ;
471
- [oldCenterViewController beginAppearanceTransition: NO animated: animated];
483
+ if (forwardAppearanceMethodsToCenterViewController ){
484
+ [oldCenterViewController beginAppearanceTransition: NO animated: animated];
485
+ }
472
486
newCenterRect.origin .x = targetClosePoint;
473
487
[UIView
474
488
animateWithDuration: firstDuration
@@ -482,10 +496,12 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
482
496
483
497
CGRect oldCenterRect = self.centerContainerView .frame ;
484
498
[self setCenterViewController: newCenterViewController animated: animated];
485
- [oldCenterViewController endAppearanceTransition ];
486
499
[self .centerContainerView setFrame: oldCenterRect];
487
500
[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
+ }
489
505
[sideDrawerViewController beginAppearanceTransition: NO animated: animated];
490
506
[UIView
491
507
animateWithDuration: [self animationDurationForAnimationDistance: CGRectGetWidth (self .childControllerContainerView.bounds)]
@@ -496,8 +512,10 @@ -(void)setCenterViewController:(UIViewController *)newCenterViewController withF
496
512
[self updateDrawerVisualStateForDrawerSide: self .openSide percentVisible: 0.0 ];
497
513
}
498
514
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
+ }
501
519
[sideDrawerViewController endAppearanceTransition ];
502
520
[self resetDrawerVisualStateForDrawerSide: self .openSide];
503
521
0 commit comments