Merge branch 'bugfix/CXTDT-205294' into 'develop'

navigation verification fixes

See merge request BPHV_MIPS/mvm_core_ui!761
This commit is contained in:
Christiano, Kevin 2021-09-08 19:21:29 +00:00
commit 20188762a3
2 changed files with 15 additions and 5 deletions

View File

@ -108,10 +108,16 @@ import UIKit
/// Convenience function to return the navigation model of the lowest controller traversing managers if applicable. /// Convenience function to return the navigation model of the lowest controller traversing managers if applicable.
public func getNavigationModel(from viewController: UIViewController) -> NavigationItemModelProtocol? { public func getNavigationModel(from viewController: UIViewController) -> NavigationItemModelProtocol? {
return (viewController as? PageProtocol)?.pageModel?.navigationBar
}
/// Verifies the controller is the currently displayed controller.
public func isDisplayed(viewController: UIViewController) -> Bool {
guard let topViewController = topViewController, guard let topViewController = topViewController,
viewController == MVMCoreUIUtility.getViewControllerTraversingManagers(topViewController), viewController == MVMCoreUIUtility.getViewControllerTraversingManagers(topViewController) else {
let model = (viewController as? PageProtocol)?.pageModel?.navigationBar else { return nil } return false
return model }
return true
} }
} }
@ -135,7 +141,9 @@ extension NavigationController: MVMCoreViewManagerProtocol {
} }
public func newDataReceived(in viewController: UIViewController) { public func newDataReceived(in viewController: UIViewController) {
if let topViewController = topViewController,
if isDisplayed(viewController: viewController),
let topViewController = topViewController,
let model = getNavigationModel(from: viewController) { let model = getNavigationModel(from: viewController) {
Self.setNavigationItem(navigationController: self, navigationItemModel: model, viewController: topViewController) Self.setNavigationItem(navigationController: self, navigationItemModel: model, viewController: topViewController)
Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: topViewController) Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: topViewController)
@ -152,7 +160,8 @@ extension NavigationController: MVMCoreViewManagerProtocol {
} }
public func displayedViewController(_ viewController: UIViewController) { public func displayedViewController(_ viewController: UIViewController) {
if let topViewController = topViewController, if isDisplayed(viewController: viewController),
let topViewController = topViewController,
let model = getNavigationModel(from: viewController) { let model = getNavigationModel(from: viewController) {
Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: topViewController) Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: topViewController)
} }

View File

@ -117,6 +117,7 @@ public extension MVMCoreUISplitViewController {
/// Convenience function to update the navigation bar if the controller is the current lowest controller. /// Convenience function to update the navigation bar if the controller is the current lowest controller.
@objc func updateNavigationBarFor(viewController: UIViewController) { @objc func updateNavigationBarFor(viewController: UIViewController) {
guard let navigationController = navigationController, guard let navigationController = navigationController,
navigationController.isDisplayed(viewController: viewController),
let model = navigationController.getNavigationModel(from: viewController) else { return } let model = navigationController.getNavigationModel(from: viewController) else { return }
set(for: viewController, navigationController: navigationController, navigationItemModel: model) set(for: viewController, navigationController: navigationController, navigationItemModel: model)
} }