navigation verification fixes
This commit is contained in:
parent
dc28656177
commit
31a993a483
@ -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)
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user