Skip to content

Instantly share code, notes, and snippets.

@alexbaramilis
Last active April 24, 2019 14:50
Show Gist options
  • Save alexbaramilis/e33fd30e56a50ee454f70b3ed066628a to your computer and use it in GitHub Desktop.
Save alexbaramilis/e33fd30e56a50ee454f70b3ed066628a to your computer and use it in GitHub Desktop.
Binding the view model in Breather.
// MARK: - Private Properties
private let refreshSubject = PublishSubject<Void>()
private let disposeBag = DisposeBag()
// MARK: - Methods
private func bindViewModel() {
// Inputs
refreshSubject
.subscribe(viewModel.input.viewDidRefresh)
.disposed(by: disposeBag)
aqiStandardSegmentedControl.rx.selectedSegmentIndex
.subscribe(viewModel.input.aqiStandard)
.disposed(by: disposeBag)
// Outputs
viewModel.output.city.drive(cityLabel.rx.text).disposed(by: disposeBag)
viewModel.output.weatherImage.drive(weatherImageView.rx.image).disposed(by: disposeBag)
viewModel.output.temperature.drive(temperatureLabel.rx.text).disposed(by: disposeBag)
viewModel.output.temperatureColour.drive(onNext: { [unowned self] color in
self.temperatureLabel.textColor = color
}).disposed(by: disposeBag)
viewModel.output.humidity.drive(humidityLabel.rx.text).disposed(by: disposeBag)
viewModel.output.pressure.drive(pressureLabel.rx.text).disposed(by: disposeBag)
viewModel.output.windSpeed.drive(windLabel.rx.text).disposed(by: disposeBag)
viewModel.output.windDirection.drive(onNext: { [unowned self] direction in
self.windDirectionImageView.transform = CGAffineTransform(rotationAngle: direction)
}).disposed(by: disposeBag)
viewModel.output.airQuality.drive(airQualityLabel.rx.text).disposed(by: disposeBag)
viewModel.output.airQualityColour.drive(onNext: { [unowned self] color in
self.airQualityLabel.textColor = color
}).disposed(by: disposeBag)
viewModel.output.aqi.drive(aqiLabel.rx.text).disposed(by: disposeBag)
viewModel.output.mainPollutant.drive(onNext: { [unowned self] text in
self.mainPollutantLabel.setAttributedTextWithSubscripts(
text: text,
indicesOfSubscripts: text.indicesOfNumbers)
}).disposed(by: disposeBag)
viewModel.output.asthmaRisk.drive(asthmaRiskLabel.rx.text).disposed(by: disposeBag)
viewModel.output.asthmaRiskColour.drive(onNext: { [unowned self] color in
self.asthmaRiskLabel.textColor = color
}).disposed(by: disposeBag)
viewModel.output.asthmaProbability.drive(asthmaProbabilityLabel.rx.text).disposed(by: disposeBag)
}
@objc private func refresh() {
refreshSubject.onNext(())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment