From 76aaa8c881394f09ebee5d4cde0bf75638d2e25b Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Tue, 7 Apr 2020 16:55:42 -0400 Subject: [PATCH 1/2] fix navigation bar --- .../BaseControllers/ViewController.swift | 26 +++++++------------ .../Containers/NavigationController.swift | 4 +-- .../MVMCoreUISplitViewController.m | 21 ++++++++------- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/MVMCoreUI/BaseControllers/ViewController.swift b/MVMCoreUI/BaseControllers/ViewController.swift index 5bc66109..ab143b14 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -92,12 +92,8 @@ import UIKit MVMCoreDispatchUtility.performBlock(onMainThread: { self.handleNewDataAndUpdateUI() // If the screen is showing, can update the navigation controller. - if let navigationController = self.manager?.navigationController, - self.manager!.getCurrentViewController() == self { - self.set(navigationController: navigationController) - } else if let navigationController = self.navigationController, - self == MVMCoreUIUtility.getCurrentVisibleController() { - self.set(navigationController: navigationController) + if MVMCoreUIUtility.getCurrentVisibleController() == self.manager ?? self { + self.setNavigationController() } }) } catch { @@ -177,18 +173,19 @@ import UIKit } // MARK: - Navigation Item (Move to model base) - open func set(navigationController: UINavigationController?) { + open func setNavigationController() { guard let navigationItemModel = pageModel?.navigationItem, - let navigationController = navigationController else { + let navigationController = manager?.navigationController ?? navigationController else { MVMCoreUISession.sharedGlobal()?.splitViewController?.parent?.setNeedsStatusBarAppearanceUpdate() return } + let viewController = manager ?? self if navigationController == MVMCoreUISplitViewController.main()?.navigationController, - navigationController.topViewController == self { + navigationController.topViewController == viewController { MVMCoreUISession.sharedGlobal()?.splitViewController?.setupPanels() showBottomProgressBar() } - NavigationController.set(navigationController: navigationController, navigationItemModel: navigationItemModel, viewController: self) + NavigationController.set(navigationController: navigationController, navigationItemModel: navigationItemModel, viewController: viewController) } // Eventually will be moved to server @@ -294,10 +291,8 @@ import UIKit open override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) - // Update the navigation bar ui when view is appearing unless in a manager. The manager is expected to handle. - if manager == nil { - set(navigationController: navigationController) - } + // Update the navigation bar ui when view is appearing + setNavigationController() } open override func viewDidAppear(_ animated: Bool) { @@ -330,9 +325,6 @@ import UIKit // MARK: - MVMCoreViewManagerViewControllerProtocol open func viewControllerReady(inManager manager: UIViewController & MVMCoreViewManagerProtocol) { - if initialLoadFinished { - set(navigationController: manager.navigationController) - } // Janky way to track current page. MVMCoreUISession.sharedGlobal()?.currentPageType = pageType MVMCoreUILoggingHandler.shared()?.defaultLogPageState(forController: self) diff --git a/MVMCoreUI/Containers/NavigationController.swift b/MVMCoreUI/Containers/NavigationController.swift index 74aadca7..eb869e89 100644 --- a/MVMCoreUI/Containers/NavigationController.swift +++ b/MVMCoreUI/Containers/NavigationController.swift @@ -40,7 +40,7 @@ import UIKit return navigationController } - public static func set(navigationController: UINavigationController, navigationItemModel: NavigationItemModelProtocol, viewController: (UIViewController & MVMCoreViewControllerProtocol)) { + public static func set(navigationController: UINavigationController, navigationItemModel: NavigationItemModelProtocol, viewController: UIViewController) { viewController.navigationItem.title = navigationItemModel.title viewController.navigationItem.accessibilityLabel = navigationItemModel.title viewController.navigationItem.hidesBackButton = !navigationItemModel.systemBackButton @@ -58,7 +58,7 @@ import UIKit if navigationController == MVMCoreUISession.sharedGlobal()?.navigationController, navigationController.topViewController == viewController { // Update line. - MVMCoreUISession.sharedGlobal()?.navigationController?.separatorView?.set(with: navigationItemModel.line ?? LineModel(type: .standard), viewController.delegateObject?() as? MVMCoreUIDelegateObject, nil) + MVMCoreUISession.sharedGlobal()?.navigationController?.separatorView?.setStyle(navigationItemModel.line?.type ?? .standard) } if navigationController == MVMCoreUISplitViewController.main()?.navigationController, diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m index 476e7264..342d4b06 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m @@ -153,11 +153,11 @@ CGFloat const PanelAnimationDuration = 0.2; - (IBAction)leftPanelButtonPressed:(id)sender { [MVMCoreDispatchUtility performBlockOnMainThread:^{ UIViewController *viewController = self.navigationController.topViewController; - + UIViewController *detailViewController = [self getCurrentDetailViewController]; // If Viewcontroller confirms to protocol and implements the the method leftPanelButtonPressed - if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] - && [viewController respondsToSelector:@selector(isOverridingLeftButton)] - && [((UIViewController *)viewController) isOverridingLeftButton]) { + if ([detailViewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] + && [detailViewController respondsToSelector:@selector(isOverridingLeftButton)] + && [((UIViewController *)detailViewController) isOverridingLeftButton]) { return; } @@ -175,9 +175,9 @@ CGFloat const PanelAnimationDuration = 0.2; - (IBAction)backButtonPressed:(id)sender { [MVMCoreDispatchUtility performBlockOnMainThread:^{ - UIViewController *viewController = self.navigationController.topViewController; - if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] && [viewController respondsToSelector:@selector(backButtonPressed)]) { - [((UIViewController *)viewController) backButtonPressed]; + UIViewController *detailViewController = [self getCurrentDetailViewController]; + if ([detailViewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] && [detailViewController respondsToSelector:@selector(backButtonPressed)]) { + [((UIViewController *)detailViewController) backButtonPressed]; } else { [[MVMCoreNavigationHandler sharedNavigationHandler] popTopViewControllerAnimated:YES]; } @@ -187,11 +187,12 @@ CGFloat const PanelAnimationDuration = 0.2; - (IBAction)rightPanelButtonPressed:(id)sender { [MVMCoreDispatchUtility performBlockOnMainThread:^{ UIViewController *viewController = self.navigationController.topViewController; + UIViewController *detailViewController = [self getCurrentDetailViewController]; // If Viewcontroller confirms to protocol and implements the the method rightPanelButtonPressed - if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] - && [viewController respondsToSelector:@selector(isOverridingRightButton)] - && [((UIViewController *)viewController) isOverridingRightButton]) { + if ([detailViewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] + && [detailViewController respondsToSelector:@selector(isOverridingRightButton)] + && [((UIViewController *)detailViewController) isOverridingRightButton]) { return; } From 3e38234d123a4282cdfda1ffeae3e4f4436559ac Mon Sep 17 00:00:00 2001 From: Kevin G Christiano Date: Wed, 8 Apr 2020 08:09:30 -0400 Subject: [PATCH 2/2] green --- MVMCoreUI/Categories/UIColor+MFConvenience.h | 1 + MVMCoreUI/Categories/UIColor+MFConvenience.m | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/MVMCoreUI/Categories/UIColor+MFConvenience.h b/MVMCoreUI/Categories/UIColor+MFConvenience.h index c3c78c7a..92b28a36 100644 --- a/MVMCoreUI/Categories/UIColor+MFConvenience.h +++ b/MVMCoreUI/Categories/UIColor+MFConvenience.h @@ -24,6 +24,7 @@ + (nonnull UIColor *)mvmOrange; + (nonnull UIColor *)mfPumpkinColor; + (nonnull UIColor *)mfShamrock; ++ (nonnull UIColor *)mvmGreen; + (nonnull UIColor *)mfCerulean; + (nonnull UIColor *)mfWhiteTwo; diff --git a/MVMCoreUI/Categories/UIColor+MFConvenience.m b/MVMCoreUI/Categories/UIColor+MFConvenience.m index 6ff8f70f..33df3848 100644 --- a/MVMCoreUI/Categories/UIColor+MFConvenience.m +++ b/MVMCoreUI/Categories/UIColor+MFConvenience.m @@ -61,6 +61,10 @@ return [UIColor mfColor8bitsWithRed:0 green:134 blue:49 alpha:1.0]; } ++ (nonnull UIColor *)mvmGreen { + return [UIColor mfColor8bitsWithRed:0 green:134 blue:48 alpha:1.0]; +} + + (nonnull UIColor *)mfCerulean { return [UIColor mfColor8bitsWithRed:0 green:122 blue:184 alpha:1.0]; }