Last active
September 21, 2021 04:14
-
-
Save davideme/922aa79c0db3b009a172cd56e3b57fec to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// ViewController.swift | |
// LifeCycleDelegate | |
// | |
// Created by Davide Mendolia on 30/01/2018. | |
// Copyright © 2018 Karumi. All rights reserved. | |
// | |
import UIKit | |
protocol ViewControllerLifecycle { | |
} | |
@objc protocol ViewControllerLifecycleObserver { | |
@objc optional func viewDidLoad() | |
@objc optional func viewWillAppear() | |
@objc optional func viewDidAppear() | |
@objc optional func viewWillDisappear() | |
@objc optional func viewDidDisappear() | |
} | |
class BaseViewControllerWithLifecycleDelegate: UIViewController { | |
var lifecycleDeletage: ViewControllerLifecycleObserver? | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
lifecycleDeletage?.viewDidLoad?() | |
} | |
override func viewWillAppear(_ animated: Bool) { | |
super.viewWillAppear(animated) | |
lifecycleDeletage?.viewWillAppear?() | |
} | |
override func viewDidAppear(_ animated: Bool) { | |
super.viewDidAppear(animated) | |
lifecycleDeletage?.viewDidAppear?() | |
} | |
override func viewWillDisappear(_ animated: Bool) { | |
super.viewWillDisappear(animated) | |
lifecycleDeletage?.viewWillDisappear?() | |
} | |
override func viewDidDisappear(_ animated: Bool) { | |
super.viewDidDisappear(animated) | |
lifecycleDeletage?.viewDidDisappear?() | |
} | |
} | |
class Presenter: ViewControllerLifecycleObserver { | |
func viewDidLoad() { | |
print("Trigger on view did load") | |
} | |
} | |
func provideViewController() -> UIViewController { | |
let vc = BaseViewControllerWithLifecycleDelegate() | |
vc.lifecycleDeletage = Presenter() | |
return vc | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Where can I see an example you apply?