move navigation bar setter to pre-animation for smoothness

This commit is contained in:
Scott Pfeil 2022-03-24 18:59:40 -04:00
parent cd87a78072
commit ced4728ca0
3 changed files with 14 additions and 14 deletions

View File

@ -69,7 +69,6 @@ extension NavigationController: MVMCoreViewManagerProtocol {
} }
public func newDataReceived(in viewController: UIViewController) { public func newDataReceived(in viewController: UIViewController) {
if isDisplayed(viewController: viewController), if isDisplayed(viewController: viewController),
let topViewController = topViewController, let topViewController = topViewController,
let model = getNavigationModel(from: viewController) { let model = getNavigationModel(from: viewController) {
@ -81,44 +80,40 @@ extension NavigationController: MVMCoreViewManagerProtocol {
public func willDisplay(_ viewController: UIViewController) { public func willDisplay(_ viewController: UIViewController) {
if let topViewController = topViewController, if let topViewController = topViewController,
isDisplayed(viewController: viewController),
let model = getNavigationModel(from: viewController) { let model = getNavigationModel(from: viewController) {
setNavigationItem(with: model, for: topViewController) setNavigationItem(with: model, for: topViewController)
setNavigationBarUI(with: model)
} }
manager?.willDisplay?(viewController) manager?.willDisplay?(viewController)
} }
public func displayedViewController(_ viewController: UIViewController) { public func displayedViewController(_ viewController: UIViewController) {
if isDisplayed(viewController: viewController),
let model = getNavigationModel(from: viewController) {
setNavigationBarUI(with: model)
}
manager?.displayedViewController?(viewController) manager?.displayedViewController?(viewController)
} }
} }
extension NavigationController: MVMCorePresentationDelegateProtocol { extension NavigationController: MVMCorePresentationDelegateProtocol {
public func navigationController(_ navigationController: UINavigationController, prepareDisplayFor viewController: UIViewController) { public func navigationController(_ navigationController: UINavigationController, prepareDisplayFor viewController: UIViewController) {
if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) {
MVMCoreViewManagerViewControllerProtocolHelper.helpSetManager(self, viewController: controller)
}
guard self == navigationController, guard self == navigationController,
let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController), let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController),
let model = getNavigationModel(from: newViewController) else { return } let model = getNavigationModel(from: newViewController) else { return }
setNavigationItem(with: model, for: viewController) setNavigationItem(with: model, for: viewController)
setNavigationBarUI(with: model)
} }
public func navigationController(_ navigationController: UINavigationController, willDisplay viewController: UIViewController) { public func navigationController(_ navigationController: UINavigationController, willDisplay viewController: UIViewController) {
guard self == navigationController, guard self == navigationController,
let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return } let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return }
if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) {
MVMCoreViewManagerViewControllerProtocolHelper.helpSetManager(self, viewController: controller)
}
manager?.willDisplay?(newViewController) manager?.willDisplay?(newViewController)
} }
public func navigationController(_ navigationController: UINavigationController, displayedViewController viewController: UIViewController) { public func navigationController(_ navigationController: UINavigationController, displayedViewController viewController: UIViewController) {
guard self == navigationController, guard self == navigationController,
let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return } let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return }
if let model = getNavigationModel(from: newViewController) {
setNavigationBarUI(with: model)
}
manager?.displayedViewController?(newViewController) manager?.displayedViewController?(newViewController)
if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) {
controller.viewControllerReady?(inManager: self) controller.viewControllerReady?(inManager: self)

View File

@ -153,7 +153,7 @@ extension MVMCoreUISplitViewController: MVMCoreViewManagerProtocol {
navigationController?.containsPage(withPageType: pageType) ?? false navigationController?.containsPage(withPageType: pageType) ?? false
} }
public func displayedViewController(_ viewController: UIViewController) { public func willDisplay(_ viewController: UIViewController) {
setupPanels() setupPanels()
updateNavigationBarFor(viewController: viewController) updateNavigationBarFor(viewController: viewController)
} }

View File

@ -121,6 +121,11 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
(viewController as? MVMCoreViewManagerViewControllerProtocol)?.managerWillDisappear?(self) (viewController as? MVMCoreViewManagerViewControllerProtocol)?.managerWillDisappear?(self)
} }
open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
hideNavigationBarLine(true)
}
/// Hides/Shows the navigation bar for the page. /// Hides/Shows the navigation bar for the page.
open func hideNavigationBarLine(_ isHidden: Bool) { open func hideNavigationBarLine(_ isHidden: Bool) {
guard self == navigationController?.topViewController else { return } guard self == navigationController?.topViewController else { return }
@ -228,6 +233,7 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
} }
tabs.selectIndex(index, animated: true) tabs.selectIndex(index, animated: true)
self.index = nil self.index = nil
hideNavigationBarLine(true)
} }
public func navigationController(_ navigationController: UINavigationController, willDisplay viewController: UIViewController) { public func navigationController(_ navigationController: UINavigationController, willDisplay viewController: UIViewController) {
@ -262,7 +268,6 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
if let viewController = getCurrentViewController() { if let viewController = getCurrentViewController() {
manager?.displayedViewController?(viewController) manager?.displayedViewController?(viewController)
} }
hideNavigationBarLine(true)
} }
// MARK: - TabsDelegate // MARK: - TabsDelegate
@ -314,11 +319,11 @@ open class SubNavManagerController: ViewController, MVMCoreViewManagerProtocol,
public func willDisplay(_ viewController: UIViewController) { public func willDisplay(_ viewController: UIViewController) {
manager?.willDisplay?(viewController) manager?.willDisplay?(viewController)
hideNavigationBarLine(true)
} }
public func displayedViewController(_ viewController: UIViewController) { public func displayedViewController(_ viewController: UIViewController) {
manager?.displayedViewController?(viewController) manager?.displayedViewController?(viewController)
hideNavigationBarLine(true)
} }
// MARK: - MVMCoreUISwipeNavigationProtocol // MARK: - MVMCoreUISwipeNavigationProtocol