From 926ee41277caf66cadfc62b1be202cb054f8280a Mon Sep 17 00:00:00 2001 From: Kyle Matthew Hedden Date: Thu, 10 Mar 2022 21:43:54 -0500 Subject: [PATCH] will show and will hide --- MVMCoreUI/BaseControllers/ViewController.swift | 16 ++++++++++++++++ .../Protocols/PageBehaviorProtocol.swift | 10 ++++++++++ 2 files changed, 26 insertions(+) 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?)