Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 3.79 KB | None | 0 0
  1. //
  2. //  ViewController.swift
  3. //  BindUIElements
  4. //
  5. //  Created by Scott Gardner on 6/1/16.
  6. //  Copyright © 2016 Scott Gardner. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10. import RxSwift
  11. import RxCocoa
  12.  
  13. class ViewController: UIViewController {
  14.    
  15.     @IBOutlet weak var tapGestureRecognizer: UITapGestureRecognizer!
  16.     @IBOutlet weak var textField: UITextField!
  17.     @IBOutlet weak var textFieldLabel: UILabel!
  18.     @IBOutlet weak var textView: TextView!
  19.     @IBOutlet weak var textViewLabel: UILabel!
  20.     @IBOutlet weak var button: Button!
  21.     @IBOutlet weak var buttonLabel: UILabel!
  22.     @IBOutlet weak var segmentedControl: UISegmentedControl!
  23.     @IBOutlet weak var segmentedControlLabel: UILabel!
  24.     @IBOutlet weak var slider: UISlider!
  25.     @IBOutlet weak var progressView: UIProgressView!
  26.     @IBOutlet weak var aSwitch: UISwitch!
  27.     @IBOutlet weak var activityIndicator: UIActivityIndicatorView!
  28.     @IBOutlet weak var stepper: UIStepper!
  29.     @IBOutlet weak var stepperLabel: UILabel!
  30.     @IBOutlet weak var datePicker: UIDatePicker!
  31.     @IBOutlet weak var datePickerLabel: UILabel!
  32.    
  33.     let disposeBag = DisposeBag()
  34.    
  35.     lazy var dateFormatter: DateFormatter = {
  36.         let formatter = DateFormatter()
  37.         formatter.dateStyle = .medium
  38.         formatter.timeStyle = .short
  39.         return formatter
  40.     }()
  41.    
  42.     override func viewDidLoad() {
  43.         super.viewDidLoad()
  44.        
  45.         tapGestureRecognizer.rx.event.asDriver()
  46.             .drive(onNext: { [unowned self] (recognizer) in
  47.                 self.view.endEditing(true)
  48.             })
  49.             .addDisposableTo(disposeBag)
  50.        
  51.         textField.rx.text.asDriver()
  52.             .drive(textFieldLabel.rx.text)
  53.             .addDisposableTo(disposeBag)
  54.        
  55.         textView.rx.text.asControlProperty()
  56.             .bind { [unowned self] (value) in
  57.                 self.textViewLabel.rx.text.onNext("Characters count: \(String(describing: value?.characters.count))")
  58.             }
  59.             .addDisposableTo(disposeBag)
  60.        
  61.         button.rx.tap.asDriver()
  62.             .drive(onNext: { [unowned self] () in
  63.                 self.buttonLabel.text! += "Tapped! "
  64.                 self.view.endEditing(true)
  65.                 UIView.animate(withDuration: 0.3, animations: {
  66.                     self.view.layoutIfNeeded()
  67.                 })
  68.             })
  69.             .addDisposableTo(disposeBag)
  70.        
  71.         segmentedControl.rx.value.asDriver()
  72.             .skip(1)
  73.             .drive(onNext: { [unowned self] (val) in
  74.                 self.segmentedControlLabel.text = "Selected segment: \(val)"
  75.                 UIView.animate(withDuration: 0.3, animations: {
  76.                     self.view.layoutIfNeeded()
  77.                 })
  78.             }).addDisposableTo(disposeBag)
  79.        
  80.         slider.rx.value.asDriver()
  81.             .drive(progressView.rx.progress)
  82.             .addDisposableTo(disposeBag)
  83.        
  84.         aSwitch.rx.value.asDriver()
  85.             .map{!$0}
  86.             .drive(activityIndicator.rx.isHidden)
  87.             .addDisposableTo(disposeBag)
  88.        
  89.         aSwitch.rx.value.asDriver()
  90.             .drive(activityIndicator.rx.isAnimating)
  91.             .addDisposableTo(disposeBag)
  92.        
  93.        
  94.         stepper.rx.value.asDriver()
  95.             .map{ String(Int($0)) }
  96.             .drive(onNext: { [unowned self] (value) in
  97.                 self.stepperLabel.text = value
  98.             })
  99.             .addDisposableTo(disposeBag)
  100.        
  101.         datePicker.rx.date.asDriver()
  102.             .map{ [unowned self] in
  103.                 self.dateFormatter.string(from: $0)
  104.             }
  105.             .drive(onNext: { [unowned self] in
  106.                 self.datePickerLabel.text = "Selected date is \($0)"
  107.             })
  108.             .addDisposableTo(disposeBag)
  109.     }
  110.    
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement