Guest User

Untitled

a guest
Dec 7th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.08 KB | None | 0 0
  1. // Reducers
  2. typealias Reducer<T> = (inout T) -> ()
  3. func makeIncrement(by number: Int) -> Reducer<ViewController.State> {
  4.     return { state in
  5.         state.number += number
  6.     }
  7. }
  8. // Initialization
  9.  
  10. let vc = ViewController(nibName: "ViewController", bundle: nil)
  11. vc.incHandler = makeIncrement(by: 1)
  12. vc.decHandler = makeIncrement(by: -1)
  13.  
  14. // VC
  15. class ViewController: UIViewController {
  16.  
  17.     struct State {
  18.         var number: Int
  19.     }
  20.  
  21.     var state = State(number: 0) {
  22.         didSet {
  23.             render()
  24.         }
  25.     }
  26.  
  27.     @IBOutlet weak var numberLabel: UILabel!
  28.     @IBOutlet weak var incButton: UIButton!
  29.     @IBOutlet weak var decButton: UIButton!
  30.  
  31.     var incHandler: Reducer<State>!
  32.     var decHandler: Reducer<State>!
  33.  
  34.     override func viewDidLoad() {
  35.         super.viewDidLoad()
  36.         render()
  37.     }
  38.  
  39.     @IBAction func inc(_ sender: UIButton) {
  40.         incHandler(&state)
  41.     }
  42.  
  43.     @IBAction func dec(_ sender: UIButton) {
  44.         decHandler(&state)
  45.     }
  46.  
  47.     func render() {
  48.         numberLabel.text = String(state.number)
  49.     }
  50. }
Add Comment
Please, Sign In to add comment