Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Reducers
- typealias Reducer<T> = (inout T) -> ()
- func makeIncrement(by number: Int) -> Reducer<ViewController.State> {
- return { state in
- state.number += number
- }
- }
- // Initialization
- let vc = ViewController(nibName: "ViewController", bundle: nil)
- vc.incHandler = makeIncrement(by: 1)
- vc.decHandler = makeIncrement(by: -1)
- // VC
- class ViewController: UIViewController {
- struct State {
- var number: Int
- }
- var state = State(number: 0) {
- didSet {
- render()
- }
- }
- @IBOutlet weak var numberLabel: UILabel!
- @IBOutlet weak var incButton: UIButton!
- @IBOutlet weak var decButton: UIButton!
- var incHandler: Reducer<State>!
- var decHandler: Reducer<State>!
- override func viewDidLoad() {
- super.viewDidLoad()
- render()
- }
- @IBAction func inc(_ sender: UIButton) {
- incHandler(&state)
- }
- @IBAction func dec(_ sender: UIButton) {
- decHandler(&state)
- }
- func render() {
- numberLabel.text = String(state.number)
- }
- }
Add Comment
Please, Sign In to add comment