From 3ec1364aed221f8ec3b4b20413720a1bd617cc36 Mon Sep 17 00:00:00 2001 From: panxi Date: Fri, 3 May 2019 15:25:41 -0400 Subject: [PATCH] let tabbar manager handle child viewcontroller's behavior --- MVMCoreUI/BaseControllers/MFViewController.m | 13 +++++++++++++ .../MVMCoreUISplitViewController.m | 4 ++-- .../MVMCoreUITabBarPageControlViewController.m | 16 ++++++++++++++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/BaseControllers/MFViewController.m b/MVMCoreUI/BaseControllers/MFViewController.m index 0c3b3f3d..5c599ca3 100644 --- a/MVMCoreUI/BaseControllers/MFViewController.m +++ b/MVMCoreUI/BaseControllers/MFViewController.m @@ -352,6 +352,19 @@ } } +- (BOOL)isOverridingLeftButton { + NSDictionary *leftPanelLinkDict = [self.loadObject.pageJSON dict:@"leftPanelButtonLink"]; + if (leftPanelLinkDict) { + [[MVMCoreActionHandler sharedActionHandler] handleActionWithDictionary:leftPanelLinkDict + additionalData:nil + delegateObject:[self delegateObject]]; + return YES; + } else { + return NO; + } +} + + - (void)setSupportShouldBeAccessible:(BOOL)supportShouldBeAccessible { MVMCoreUISplitViewController *splitViewController = [MVMCoreUISession sharedGlobal].splitViewController; diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m index ff2e2964..bdfd6ecd 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m @@ -142,7 +142,7 @@ CGFloat const PanelAnimationDuration = 0.2; - (IBAction)leftPanelButtonPressed:(id)sender { [MVMCoreDispatchUtility performBlockOnMainThread:^{ - UIViewController *viewController = [self getCurrentDetailViewController]; + UIViewController *viewController = self.navigationController.topViewController; // If Viewcontroller confirms to protocol and implements the the method leftPanelButtonPressed if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] @@ -176,7 +176,7 @@ CGFloat const PanelAnimationDuration = 0.2; - (IBAction)rightPanelButtonPressed:(id)sender { [MVMCoreDispatchUtility performBlockOnMainThread:^{ - UIViewController *viewController = [self getCurrentDetailViewController]; + UIViewController *viewController = self.navigationController.topViewController; // If Viewcontroller confirms to protocol and implements the the method rightPanelButtonPressed if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] diff --git a/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m b/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m index d06ca5f4..5845a06a 100644 --- a/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m +++ b/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m @@ -139,6 +139,22 @@ } } +- (BOOL)isOverridingLeftButton { + if ([self.viewController isKindOfClass:MFViewController.class]) { + return [(MFViewController *)self.viewController isOverridingLeftButton]; + } else { + return [super isOverridingLeftButton]; + } +} + +- (BOOL)isOverridingRightButton { + if ([self.viewController isKindOfClass:MFViewController.class]) { + return [(MFViewController *)self.viewController isOverridingRightButton]; + } else { + return [super isOverridingRightButton]; + } +} + #pragma mark - View Cycle - (void)loadView {