From b946be833f615956023c15f9a689f61e467b24d5 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Thu, 14 Oct 2021 12:37:47 -0500 Subject: [PATCH] implemented prepareForDisplay protocol Signed-off-by: Matt Bruce --- .../Containers/NavigationController.swift | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/MVMCoreUI/Containers/NavigationController.swift b/MVMCoreUI/Containers/NavigationController.swift index e74671ad..a332467b 100644 --- a/MVMCoreUI/Containers/NavigationController.swift +++ b/MVMCoreUI/Containers/NavigationController.swift @@ -46,11 +46,16 @@ import UIKit } /// Convenience function for setting the navigation item. - public static func setNavigationItem(navigationController: UINavigationController, navigationItemModel: NavigationItemModelProtocol, viewController: UIViewController) { + public static func setNavigationItemProperties(navigationItemModel: NavigationItemModelProtocol, viewController: UIViewController) { viewController.navigationItem.title = navigationItemModel.title viewController.navigationItem.accessibilityLabel = navigationItemModel.title viewController.navigationItem.hidesBackButton = navigationItemModel.hidesSystemBackButton viewController.navigationItem.leftItemsSupplementBackButton = !navigationItemModel.hidesSystemBackButton + } + + /// Convenience function for setting the navigation item. + public static func setNavigationItem(navigationController: UINavigationController, navigationItemModel: NavigationItemModelProtocol, viewController: UIViewController) { + setNavigationItemProperties(navigationItemModel: navigationItemModel, viewController: viewController) setNavigationButtons(navigationController: navigationController, navigationItemModel: navigationItemModel, viewController: viewController) setNavigationTitleView(navigationController: navigationController, navigationItemModel: navigationItemModel, viewController: viewController) } @@ -152,6 +157,14 @@ extension NavigationController: MVMCoreViewManagerProtocol { manager?.newDataReceived?(in: viewController) } + public func prepareDisplay(for viewController: UIViewController) { + if let topViewController = topViewController, + let model = getNavigationModel(from: viewController) { + Self.setNavigationItemProperties(navigationItemModel: model, viewController: topViewController) + } + manager?.prepareDisplay?(for: viewController) + } + public func willDisplay(_ viewController: UIViewController) { if let topViewController = topViewController, let model = getNavigationModel(from: viewController) { @@ -171,6 +184,15 @@ extension NavigationController: MVMCoreViewManagerProtocol { } extension NavigationController: MVMCorePresentationDelegateProtocol { + public func navigationController(_ navigationController: UINavigationController, prepareDisplayFor viewController: UIViewController) { + guard self == navigationController else { return } + guard let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return } + if let model = getNavigationModel(from: newViewController) { + Self.setNavigationItemProperties(navigationItemModel: model, viewController: newViewController) + } + manager?.prepareDisplay?(for: viewController) + } + public func navigationController(_ navigationController: UINavigationController, willDisplay viewController: UIViewController) { guard self == navigationController else { return } if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) {