Add navigation bar model tracking to PageMoleculeTransformationBehavior.
Update ScreenRecordingMaskingBehavior to consume. Enhance MDN regex.
This commit is contained in:
parent
6449d68f4f
commit
0f8c21025d
@ -30,6 +30,8 @@ public protocol PageMoleculeTransformationBehavior: PageBehaviorProtocol {
|
|||||||
func onPageNew(rootMolecules: [MoleculeModelProtocol], _ delegateObject: MVMCoreUIDelegateObject?)
|
func onPageNew(rootMolecules: [MoleculeModelProtocol], _ delegateObject: MVMCoreUIDelegateObject?)
|
||||||
func willSetupMolecule(with model: MoleculeModelProtocol, updating view: MoleculeViewProtocol?)
|
func willSetupMolecule(with model: MoleculeModelProtocol, updating view: MoleculeViewProtocol?)
|
||||||
func didSetupMolecule(view: MoleculeViewProtocol, withModel: MoleculeModelProtocol)
|
func didSetupMolecule(view: MoleculeViewProtocol, withModel: MoleculeModelProtocol)
|
||||||
|
func willSetupNavigationBar(with model: NavigationItemModelProtocol, updating view: UINavigationBar)
|
||||||
|
func didSetupNavigationBar(view: UINavigationBar, withModel: NavigationItemModelProtocol)
|
||||||
}
|
}
|
||||||
|
|
||||||
public extension PageMoleculeTransformationBehavior {
|
public extension PageMoleculeTransformationBehavior {
|
||||||
@ -37,6 +39,8 @@ public extension PageMoleculeTransformationBehavior {
|
|||||||
func onPageNew(rootMolecules: [MoleculeModelProtocol], _ delegateObject: MVMCoreUIDelegateObject?) {}
|
func onPageNew(rootMolecules: [MoleculeModelProtocol], _ delegateObject: MVMCoreUIDelegateObject?) {}
|
||||||
func willSetupMolecule(with model: MoleculeModelProtocol, updating view: MoleculeViewProtocol?) {}
|
func willSetupMolecule(with model: MoleculeModelProtocol, updating view: MoleculeViewProtocol?) {}
|
||||||
func didSetupMolecule(view: MoleculeViewProtocol, withModel: MoleculeModelProtocol) {}
|
func didSetupMolecule(view: MoleculeViewProtocol, withModel: MoleculeModelProtocol) {}
|
||||||
|
func willSetupNavigationBar(with model: NavigationItemModelProtocol, updating view: UINavigationBar) {}
|
||||||
|
func didSetupNavigationBar(view: UINavigationBar, withModel: NavigationItemModelProtocol) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
public protocol PageVisibilityBehavior: PageBehaviorProtocol {
|
public protocol PageVisibilityBehavior: PageBehaviorProtocol {
|
||||||
|
|||||||
@ -70,30 +70,42 @@ 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 model = getNavigationModel(from: viewController) {
|
let model = getNavigationModel(from: viewController) {
|
||||||
setNavigationItem(with: model, for: topViewController)
|
updateNavigationView(with: model, for: viewController)
|
||||||
setNavigationBarUI(with: model)
|
|
||||||
|
|
||||||
navigationBar.setNeedsLayout()
|
|
||||||
navigationBar.layoutIfNeeded()
|
|
||||||
}
|
}
|
||||||
manager?.newDataReceived?(in: viewController)
|
manager?.newDataReceived?(in: viewController)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func willDisplay(_ viewController: UIViewController) {
|
public func willDisplay(_ viewController: UIViewController) {
|
||||||
if let topViewController = topViewController,
|
if isDisplayed(viewController: viewController),
|
||||||
isDisplayed(viewController: viewController),
|
|
||||||
let model = getNavigationModel(from: viewController) {
|
let model = getNavigationModel(from: viewController) {
|
||||||
setNavigationItem(with: model, for: topViewController)
|
updateNavigationView(with: model, for: viewController)
|
||||||
setNavigationBarUI(with: model)
|
|
||||||
|
|
||||||
navigationBar.setNeedsLayout()
|
|
||||||
navigationBar.layoutIfNeeded()
|
|
||||||
}
|
}
|
||||||
manager?.willDisplay?(viewController)
|
manager?.willDisplay?(viewController)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func updateNavigationView(with model: NavigationItemModelProtocol, for viewController: UIViewController) {
|
||||||
|
guard let topViewController = topViewController else { return }
|
||||||
|
|
||||||
|
if let pageBehaviorController = viewController as? PageBehaviorHandlerProtocol {
|
||||||
|
pageBehaviorController.executeBehaviors { (behavior: PageMoleculeTransformationBehavior) in
|
||||||
|
behavior.willSetupNavigationBar(with: model, updating: navigationBar)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setNavigationItem(with: model, for: topViewController)
|
||||||
|
setNavigationBarUI(with: model)
|
||||||
|
|
||||||
|
navigationBar.setNeedsLayout()
|
||||||
|
navigationBar.layoutIfNeeded()
|
||||||
|
|
||||||
|
if let pageBehaviorController = viewController as? PageBehaviorHandlerProtocol {
|
||||||
|
pageBehaviorController.executeBehaviors { (behavior: PageMoleculeTransformationBehavior) in
|
||||||
|
behavior.didSetupNavigationBar(view: navigationBar, withModel: model)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public func displayedViewController(_ viewController: UIViewController) {
|
public func displayedViewController(_ viewController: UIViewController) {
|
||||||
manager?.displayedViewController?(viewController)
|
manager?.displayedViewController?(viewController)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user