fix navigation bar

This commit is contained in:
Pfeil, Scott Robert 2020-04-07 16:55:42 -04:00
parent 1d6ed35d84
commit 76aaa8c881
3 changed files with 22 additions and 29 deletions

View File

@ -92,12 +92,8 @@ import UIKit
MVMCoreDispatchUtility.performBlock(onMainThread: {
self.handleNewDataAndUpdateUI()
// If the screen is showing, can update the navigation controller.
if let navigationController = self.manager?.navigationController,
self.manager!.getCurrentViewController() == self {
self.set(navigationController: navigationController)
} else if let navigationController = self.navigationController,
self == MVMCoreUIUtility.getCurrentVisibleController() {
self.set(navigationController: navigationController)
if MVMCoreUIUtility.getCurrentVisibleController() == self.manager ?? self {
self.setNavigationController()
}
})
} catch {
@ -177,18 +173,19 @@ import UIKit
}
// MARK: - Navigation Item (Move to model base)
open func set(navigationController: UINavigationController?) {
open func setNavigationController() {
guard let navigationItemModel = pageModel?.navigationItem,
let navigationController = navigationController else {
let navigationController = manager?.navigationController ?? navigationController else {
MVMCoreUISession.sharedGlobal()?.splitViewController?.parent?.setNeedsStatusBarAppearanceUpdate()
return
}
let viewController = manager ?? self
if navigationController == MVMCoreUISplitViewController.main()?.navigationController,
navigationController.topViewController == self {
navigationController.topViewController == viewController {
MVMCoreUISession.sharedGlobal()?.splitViewController?.setupPanels()
showBottomProgressBar()
}
NavigationController.set(navigationController: navigationController, navigationItemModel: navigationItemModel, viewController: self)
NavigationController.set(navigationController: navigationController, navigationItemModel: navigationItemModel, viewController: viewController)
}
// Eventually will be moved to server
@ -294,10 +291,8 @@ import UIKit
open override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Update the navigation bar ui when view is appearing unless in a manager. The manager is expected to handle.
if manager == nil {
set(navigationController: navigationController)
}
// Update the navigation bar ui when view is appearing
setNavigationController()
}
open override func viewDidAppear(_ animated: Bool) {
@ -330,9 +325,6 @@ import UIKit
// MARK: - MVMCoreViewManagerViewControllerProtocol
open func viewControllerReady(inManager manager: UIViewController & MVMCoreViewManagerProtocol) {
if initialLoadFinished {
set(navigationController: manager.navigationController)
}
// Janky way to track current page.
MVMCoreUISession.sharedGlobal()?.currentPageType = pageType
MVMCoreUILoggingHandler.shared()?.defaultLogPageState(forController: self)

View File

@ -40,7 +40,7 @@ import UIKit
return navigationController
}
public static func set(navigationController: UINavigationController, navigationItemModel: NavigationItemModelProtocol, viewController: (UIViewController & MVMCoreViewControllerProtocol)) {
public static func set(navigationController: UINavigationController, navigationItemModel: NavigationItemModelProtocol, viewController: UIViewController) {
viewController.navigationItem.title = navigationItemModel.title
viewController.navigationItem.accessibilityLabel = navigationItemModel.title
viewController.navigationItem.hidesBackButton = !navigationItemModel.systemBackButton
@ -58,7 +58,7 @@ import UIKit
if navigationController == MVMCoreUISession.sharedGlobal()?.navigationController,
navigationController.topViewController == viewController {
// Update line.
MVMCoreUISession.sharedGlobal()?.navigationController?.separatorView?.set(with: navigationItemModel.line ?? LineModel(type: .standard), viewController.delegateObject?() as? MVMCoreUIDelegateObject, nil)
MVMCoreUISession.sharedGlobal()?.navigationController?.separatorView?.setStyle(navigationItemModel.line?.type ?? .standard)
}
if navigationController == MVMCoreUISplitViewController.main()?.navigationController,

View File

@ -153,11 +153,11 @@ CGFloat const PanelAnimationDuration = 0.2;
- (IBAction)leftPanelButtonPressed:(id)sender {
[MVMCoreDispatchUtility performBlockOnMainThread:^{
UIViewController *viewController = self.navigationController.topViewController;
UIViewController *detailViewController = [self getCurrentDetailViewController];
// If Viewcontroller confirms to protocol and implements the the method leftPanelButtonPressed
if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)]
&& [viewController respondsToSelector:@selector(isOverridingLeftButton)]
&& [((UIViewController <MVMCoreUIDetailViewProtocol> *)viewController) isOverridingLeftButton]) {
if ([detailViewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)]
&& [detailViewController respondsToSelector:@selector(isOverridingLeftButton)]
&& [((UIViewController <MVMCoreUIDetailViewProtocol> *)detailViewController) isOverridingLeftButton]) {
return;
}
@ -175,9 +175,9 @@ CGFloat const PanelAnimationDuration = 0.2;
- (IBAction)backButtonPressed:(id)sender {
[MVMCoreDispatchUtility performBlockOnMainThread:^{
UIViewController *viewController = self.navigationController.topViewController;
if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] && [viewController respondsToSelector:@selector(backButtonPressed)]) {
[((UIViewController <MVMCoreUIDetailViewProtocol> *)viewController) backButtonPressed];
UIViewController *detailViewController = [self getCurrentDetailViewController];
if ([detailViewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)] && [detailViewController respondsToSelector:@selector(backButtonPressed)]) {
[((UIViewController <MVMCoreUIDetailViewProtocol> *)detailViewController) backButtonPressed];
} else {
[[MVMCoreNavigationHandler sharedNavigationHandler] popTopViewControllerAnimated:YES];
}
@ -187,11 +187,12 @@ CGFloat const PanelAnimationDuration = 0.2;
- (IBAction)rightPanelButtonPressed:(id)sender {
[MVMCoreDispatchUtility performBlockOnMainThread:^{
UIViewController *viewController = self.navigationController.topViewController;
UIViewController *detailViewController = [self getCurrentDetailViewController];
// If Viewcontroller confirms to protocol and implements the the method rightPanelButtonPressed
if ([viewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)]
&& [viewController respondsToSelector:@selector(isOverridingRightButton)]
&& [((UIViewController <MVMCoreUIDetailViewProtocol> *)viewController) isOverridingRightButton]) {
if ([detailViewController conformsToProtocol:@protocol(MVMCoreUIDetailViewProtocol)]
&& [detailViewController respondsToSelector:@selector(isOverridingRightButton)]
&& [((UIViewController <MVMCoreUIDetailViewProtocol> *)detailViewController) isOverridingRightButton]) {
return;
}