diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift index e2e6798a..c0420055 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift @@ -262,7 +262,7 @@ extension MVMCoreUISplitViewController: MVMCoreViewManagerProtocol { } public func willDisplay(_ viewController: UIViewController) { - setupPanels() + setupPanels(viewController) updateState(with: viewController) } diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h index a5c1577f..ac057f10 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h @@ -99,7 +99,7 @@ typedef NS_ENUM(NSInteger, MFNumberOfDrawers) { - (void)setNavigationIconColor:(nullable UIColor *)color; /// Updates the panels that are used. -- (void)setupPanels; +- (void)setupPanels:(nullable UIViewController*)viewController; /// Returns if the left panel is staying extended (usually do to screen size threshold) - (BOOL)leftPanelStaysExtended; diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m index c43d17d9..79c81b8d 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m @@ -723,9 +723,9 @@ CGFloat const PanelAnimationDuration = 0.2; [panel removeFromParentViewController]; } -- (void)setupLeftPanel { +- (void)setupLeftPanel:(nullable UIViewController*)viewController { UIViewController *panel = nil; - UIViewController *currentViewController = [self getCurrentDetailViewController]; + UIViewController *currentViewController = viewController ? viewController : [self getCurrentDetailViewController]; if ([currentViewController respondsToSelector:@selector(overrideLeftPanel)]) { panel = [((UIViewController *)currentViewController) overrideLeftPanel]; } else { @@ -735,6 +735,7 @@ CGFloat const PanelAnimationDuration = 0.2; if (!panel) { [self removePanel:self.leftPanel]; + self.leftPanel = nil; } else if (panel && panel != self.leftPanel) { [self removePanel:self.leftPanel]; [self addPanel:panel]; @@ -795,9 +796,9 @@ CGFloat const PanelAnimationDuration = 0.2; } } -- (void)setupPanels { +- (void)setupPanels:(nullable UIViewController*)viewController { [self forceHideBothDrawers]; - [self setupLeftPanel]; + [self setupLeftPanel:viewController]; [self setupRightPanel]; self.explictlyShowingPanel = nil; [self.view layoutIfNeeded]; @@ -968,7 +969,7 @@ CGFloat const PanelAnimationDuration = 0.2; [NSLayoutConstraint constraintWithItem:coverView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0].active = YES; [NSLayoutConstraint constraintWithItem:self.view attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:coverView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0].active = YES; - [self setupPanels]; + [self setupPanels:nil]; } - (void)viewDidLoad {