From a9734be4df338fd472a474023db53385d37ee81a Mon Sep 17 00:00:00 2001 From: "Suresh, Kamlesh" Date: Thu, 18 Apr 2019 12:32:59 -0400 Subject: [PATCH 1/3] detail view controller --- .../SplitViewController/MVMCoreUISplitViewController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m index bdfd6ecd..ff2e2964 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.navigationController.topViewController; + UIViewController *viewController = [self getCurrentDetailViewController]; // 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.navigationController.topViewController; + UIViewController *viewController = [self getCurrentDetailViewController]; // If Viewcontroller confirms to protocol and implements the the method rightPanelButtonPressed if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] From 3ec1364aed221f8ec3b4b20413720a1bd617cc36 Mon Sep 17 00:00:00 2001 From: panxi Date: Fri, 3 May 2019 15:25:41 -0400 Subject: [PATCH 2/3] 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 { From f4bf4c0b5a8cf5157e4199b12f12e95a2e36c968 Mon Sep 17 00:00:00 2001 From: panxi Date: Wed, 8 May 2019 11:03:14 -0400 Subject: [PATCH 3/3] update code based on Scott's comment --- MVMCoreUI/BaseControllers/MFViewController.m | 8 ++------ .../MVMCoreUITabBarPageControlViewController.m | 8 ++++---- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/MVMCoreUI/BaseControllers/MFViewController.m b/MVMCoreUI/BaseControllers/MFViewController.m index 5c599ca3..a9206b52 100644 --- a/MVMCoreUI/BaseControllers/MFViewController.m +++ b/MVMCoreUI/BaseControllers/MFViewController.m @@ -343,9 +343,7 @@ - (BOOL)isOverridingRightButton { NSDictionary *rightPanelLinkDict = [self.loadObject.pageJSON dict:@"rightPanelButtonLink"]; if (rightPanelLinkDict) { - [[MVMCoreActionHandler sharedActionHandler] handleActionWithDictionary:rightPanelLinkDict - additionalData:nil - delegateObject:[self delegateObject]]; + [[MVMCoreActionHandler sharedActionHandler] handleActionWithDictionary:rightPanelLinkDict additionalData:nil delegateObject:[self delegateObject]]; return YES; } else { return NO; @@ -355,9 +353,7 @@ - (BOOL)isOverridingLeftButton { NSDictionary *leftPanelLinkDict = [self.loadObject.pageJSON dict:@"leftPanelButtonLink"]; if (leftPanelLinkDict) { - [[MVMCoreActionHandler sharedActionHandler] handleActionWithDictionary:leftPanelLinkDict - additionalData:nil - delegateObject:[self delegateObject]]; + [[MVMCoreActionHandler sharedActionHandler] handleActionWithDictionary:leftPanelLinkDict additionalData:nil delegateObject:[self delegateObject]]; return YES; } else { return NO; diff --git a/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m b/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m index 5845a06a..1d8481d6 100644 --- a/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m +++ b/MVMCoreUI/Containers/TabBarController/MVMCoreUITabBarPageControlViewController.m @@ -140,16 +140,16 @@ } - (BOOL)isOverridingLeftButton { - if ([self.viewController isKindOfClass:MFViewController.class]) { - return [(MFViewController *)self.viewController isOverridingLeftButton]; + if ([self.viewController respondsToSelector:@selector(isOverridingLeftButton)]) { + return [self.viewController performSelector:@selector(isOverridingLeftButton)]; } else { return [super isOverridingLeftButton]; } } - (BOOL)isOverridingRightButton { - if ([self.viewController isKindOfClass:MFViewController.class]) { - return [(MFViewController *)self.viewController isOverridingRightButton]; + if ([self.viewController respondsToSelector:@selector(isOverridingRightButton)]) { + return [self.viewController performSelector:@selector(isOverridingRightButton)]; } else { return [super isOverridingRightButton]; }