BoundSwitchTableViewCell.swift 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // BoundSwitchTableViewCell.swift
  3. // MockKitUI
  4. //
  5. // Copyright © 2019 LoopKit Authors. All rights reserved.
  6. //
  7. import LoopKitUI
  8. class BoundSwitchTableViewCell: SwitchTableViewCell {
  9. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  10. super.init(style: style, reuseIdentifier: reuseIdentifier)
  11. selectionStyle = .none
  12. }
  13. required init?(coder: NSCoder) {
  14. super.init(coder: coder)
  15. }
  16. var onToggle: ((_ isOn: Bool) -> Void)? {
  17. didSet {
  18. if onToggle == nil {
  19. self.switch?.removeTarget(nil, action: nil, for: .valueChanged)
  20. } else {
  21. `switch`?.addTarget(self, action: #selector(respondToToggle), for: .valueChanged)
  22. }
  23. }
  24. }
  25. override func prepareForReuse() {
  26. super.prepareForReuse()
  27. onToggle = nil
  28. `switch`?.addTarget(self, action: #selector(respondToToggle), for: .valueChanged)
  29. }
  30. @objc private func respondToToggle() {
  31. if let `switch` = `switch`, let onToggle = onToggle {
  32. onToggle(`switch`.isOn)
  33. }
  34. }
  35. }