diff --git a/MVMCoreUI/BaseControllers/ViewController.swift b/MVMCoreUI/BaseControllers/ViewController.swift index b385ae29..2851b479 100644 --- a/MVMCoreUI/BaseControllers/ViewController.swift +++ b/MVMCoreUI/BaseControllers/ViewController.swift @@ -385,6 +385,14 @@ import UIKit } } + open override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + executeBehaviors { [weak self] (behavior: PageVisibilityBehavior) in + behavior.willShowPage(self?.delegateObjectIVar) + } + } + open override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) @@ -393,6 +401,14 @@ import UIKit } } + open override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + + executeBehaviors { [weak self] (behavior: PageVisibilityBehavior) in + behavior.willHidePage(self?.delegateObjectIVar) + } + } + open override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) diff --git a/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift b/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift index 65773aa0..15b15d68 100644 --- a/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift +++ b/MVMCoreUI/Behaviors/Protocols/PageBehaviorProtocol.swift @@ -33,10 +33,20 @@ public extension PageMoleculeTransformationBehavior { public protocol PageVisibilityBehavior: PageBehaviorProtocol { + func willShowPage(_ delegateObject: MVMCoreUIDelegateObject?) func onPageShown(_ delegateObject: MVMCoreUIDelegateObject?) + func willHidePage(_ delegateObject: MVMCoreUIDelegateObject?) func onPageHidden(_ delegateObject: MVMCoreUIDelegateObject?) } +public extension PageVisibilityBehavior { + // All optional. + func willShowPage(_ delegateObject: MVMCoreUIDelegateObject?) {} + func onPageShown(_ delegateObject: MVMCoreUIDelegateObject?) {} + func willHidePage(_ delegateObject: MVMCoreUIDelegateObject?) {} + func onPageHidden(_ delegateObject: MVMCoreUIDelegateObject?) {} +} + public protocol PageScrolledBehavior: PageBehaviorProtocol { func pageScrolled(scrollView: UIScrollView, _ delegateObject: MVMCoreUIDelegateObject?)