SSEventFlow
SSEventFlow is a type safe alternative to NotificationCenter, inspired by Flux.
The Flux Application Architecture was recently invented by Facebook. See video to how it works
Usage
Open the SSEventFlow.xcodeproj
file and run the Example project.
Requirements
- iOS 13.0+ / macOS 10.15+
- Xcode 11.4+
- Swift 5.2+
Installation
SSEventFlow is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "SSEventFlow"
Example of how to send out notifications
class ParentViewController: UIViewController {
@IBAction func redButtonAction(_ sender: Any) {
PickedColorEvent(color: UIColor.red, name: "RED").fire()
}
@IBAction func greenButtonAction(_ sender: Any) {
PickedColorEvent(color: UIColor.green, name: "GREEN").fire()
}
@IBAction func blueButtonAction(_ sender: Any) {
PickedColorEvent(color: UIColor.blue, name: "BLUE").fire()
}
@IBAction func resetButtonAction(_ sender: Any) {
ResetEvent().fire()
}
}
Example of how to listen for notifications
class ChildViewController: UIViewController {
@IBOutlet weak var colorName: UILabel!
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
flow_start()
}
override func viewDidDisappear(_ animated: Bool) {
flow_stop()
super.viewDidDisappear(animated)
}
}
extension ChildViewController: FlowDispatcher {
func flow_dispatch(_ event: FlowEvent) {
if let e = event as? PickedColorEvent {
view.backgroundColor = e.color
colorName.text = e.name
}
if event is ResetEvent {
view.backgroundColor = nil
colorName.text = ""
}
}
}
Support
You are welcome to use SSEventFlow free of charge.
If you are using and enjoying my work, maybe you could donate me a beer (or if you don’t drink – a coffee and bagel will do just fine, a good kind of bagel though, you know… with wonderful stuff inside to make it glorious).
Please donate via PayPal and just like they say on TV – give generously! It motivates me to keep working on this.
License
MIT