navigation verification fixes

This commit is contained in:
Pfeil, Scott Robert 2021-09-08 19:21:21 +00:00 committed by Christiano, Kevin
parent dc28656177
commit 31a993a483
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.
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,
viewController == MVMCoreUIUtility.getViewControllerTraversingManagers(topViewController),
let model = (viewController as? PageProtocol)?.pageModel?.navigationBar else { return nil }
return model
viewController == MVMCoreUIUtility.getViewControllerTraversingManagers(topViewController) else {
return false
}
return true
}
}
@ -135,7 +141,9 @@ extension NavigationController: MVMCoreViewManagerProtocol {
}
public func newDataReceived(in viewController: UIViewController) {
if let topViewController = topViewController,
if isDisplayed(viewController: viewController),
let topViewController = topViewController,
let model = getNavigationModel(from: viewController) {
Self.setNavigationItem(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) {
if let topViewController = topViewController,
if isDisplayed(viewController: viewController),
let topViewController = topViewController,
let model = getNavigationModel(from: viewController) {
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.
@objc func updateNavigationBarFor(viewController: UIViewController) {
guard let navigationController = navigationController,
navigationController.isDisplayed(viewController: viewController),
let model = navigationController.getNavigationModel(from: viewController) else { return }
set(for: viewController, navigationController: navigationController, navigationItemModel: model)
}