diff --git a/MVMCoreUI/Containers/NavigationController.swift b/MVMCoreUI/Containers/NavigationController.swift index 6176427f..776bfe2a 100644 --- a/MVMCoreUI/Containers/NavigationController.swift +++ b/MVMCoreUI/Containers/NavigationController.swift @@ -130,11 +130,11 @@ extension NavigationController: MVMCoreViewManagerProtocol { } public func newDataReceived(in viewController: UIViewController) { - if viewController == topViewController, - let model = Self.getNavigationModel(from: viewController) { - Self.setNavigationItem(navigationController: self, navigationItemModel: model, viewController: viewController) - Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: viewController) - } + guard let topViewController = topViewController, + viewController == MVMCoreUIUtility.getViewControllerTraversingManagers(topViewController), + let model = Self.getNavigationModel(from: viewController) else { return } + Self.setNavigationItem(navigationController: self, navigationItemModel: model, viewController: viewController) + Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: viewController) manager?.newDataReceived?(in: viewController) } @@ -160,7 +160,6 @@ extension NavigationController: MVMCorePresentationDelegateProtocol { guard self == navigationController else { return } if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { MVMCoreViewManagerViewControllerProtocolHelper.helpSetManager(self, viewController: controller) - controller.viewControllerReady?(inManager: self) } if let model = Self.getNavigationModel(from: viewController) { Self.setNavigationItem(navigationController: self, navigationItemModel: model, viewController: viewController) @@ -174,5 +173,8 @@ extension NavigationController: MVMCorePresentationDelegateProtocol { Self.setNavigationBarUI(navigationController: self, navigationItemModel: model, viewController: viewController) } manager?.displayedViewController?(viewController) + if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { + controller.viewControllerReady?(inManager: self) + } } } diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift index fcd4e821..4c389bd3 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController+Extension.swift @@ -75,7 +75,7 @@ public extension MVMCoreUISplitViewController { leftItems.append(contentsOf: additionalLeftButtons) } - viewController.navigationItem.setLeftBarButtonItems(leftItems.count > 0 ? leftItems : nil, animated: !DisableAnimations.boolValue) + navigationController.topViewController?.navigationItem.setLeftBarButtonItems(leftItems.count > 0 ? leftItems : nil, animated: !DisableAnimations.boolValue) } /// Sets the right navigation items for the view controller based on model and splitview. @@ -102,7 +102,7 @@ public extension MVMCoreUISplitViewController { rightItems.append(contentsOf: additionalRightButtons) } - viewController.navigationItem.setRightBarButtonItems(rightItems.count > 0 ? rightItems : nil, animated: !DisableAnimations.boolValue) + navigationController.topViewController?.navigationItem.setRightBarButtonItems(rightItems.count > 0 ? rightItems : nil, animated: !DisableAnimations.boolValue) } @objc func navigationBarModelExists() -> Bool { @@ -129,7 +129,8 @@ extension MVMCoreUISplitViewController: MVMCoreViewManagerProtocol { } public func displayedViewController(_ viewController: UIViewController) { - updateNavigationBarFor(viewController: viewController) + guard let controller = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return } + updateNavigationBarFor(viewController: controller) } public func newDataReceived(in viewController: UIViewController) {