MeasurementFrequencyTableViewController.swift 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //
  2. // MeasurementFrequencyTableViewController.swift
  3. // MockKitUI
  4. //
  5. // Created by Nathaniel Hamming on 2020-06-22.
  6. // Copyright © 2020 LoopKit Authors. All rights reserved.
  7. //
  8. import UIKit
  9. import LoopKit
  10. import LoopKitUI
  11. import MockKit
  12. protocol MeasurementFrequencyTableViewControllerDelegate: class {
  13. func measurementFrequencyTableViewControllerDidChangeFrequency(_ controller: MeasurementFrequencyTableViewController)
  14. }
  15. final class MeasurementFrequencyTableViewController: RadioSelectionTableViewController {
  16. var measurementFrequency: MeasurementFrequency? {
  17. get {
  18. if let selectedIndex = selectedIndex {
  19. return MeasurementFrequency.allCases[selectedIndex]
  20. } else {
  21. return nil
  22. }
  23. }
  24. set {
  25. if let newValue = newValue {
  26. selectedIndex = MeasurementFrequency.allCases.firstIndex(of: newValue)
  27. } else {
  28. selectedIndex = nil
  29. }
  30. }
  31. }
  32. weak var measurementFrequencyDelegate: MeasurementFrequencyTableViewControllerDelegate?
  33. convenience init() {
  34. self.init(style: .grouped)
  35. options = MeasurementFrequency.allCases.map { frequency in
  36. "\(frequency.localizedDescription)"
  37. }
  38. delegate = self
  39. }
  40. }
  41. extension MeasurementFrequencyTableViewController: RadioSelectionTableViewControllerDelegate {
  42. func radioSelectionTableViewControllerDidChangeSelectedIndex(_ controller: RadioSelectionTableViewController) {
  43. measurementFrequencyDelegate?.measurementFrequencyTableViewControllerDidChangeFrequency(self)
  44. }
  45. }