Skip to content

Instantly share code, notes, and snippets.

@davideme
Last active September 21, 2021 04:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davideme/922aa79c0db3b009a172cd56e3b57fec to your computer and use it in GitHub Desktop.
Save davideme/922aa79c0db3b009a172cd56e3b57fec to your computer and use it in GitHub Desktop.
//
// 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
}
@linhnobi
Copy link

Where can I see an example you apply?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment