DateAndDurationTableViewCell.swift 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //
  2. // DateAndDurationTableViewCell.swift
  3. // LoopKitUI
  4. //
  5. // Copyright © 2018 LoopKit Authors. All rights reserved.
  6. //
  7. import UIKit
  8. public class DateAndDurationTableViewCell: DatePickerTableViewCell {
  9. public weak var delegate: DatePickerTableViewCellDelegate?
  10. @IBOutlet public weak var titleLabel: UILabel!
  11. @IBOutlet public weak var dateLabel: UILabel! {
  12. didSet {
  13. // Setting this color in code because the nib isn't being applied correctly
  14. if #available(iOSApplicationExtension 13.0, *) {
  15. dateLabel.textColor = .secondaryLabel
  16. }
  17. }
  18. }
  19. private lazy var durationFormatter: DateComponentsFormatter = {
  20. let formatter = DateComponentsFormatter()
  21. formatter.allowedUnits = [.hour, .minute]
  22. formatter.unitsStyle = .short
  23. return formatter
  24. }()
  25. public override func updateDateLabel() {
  26. switch datePicker.datePickerMode {
  27. case .countDownTimer:
  28. dateLabel.text = durationFormatter.string(from: duration)
  29. case .date:
  30. dateLabel.text = DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .none)
  31. case .dateAndTime:
  32. dateLabel.text = DateFormatter.localizedString(from: date, dateStyle: .short, timeStyle: .short)
  33. case .time:
  34. dateLabel.text = DateFormatter.localizedString(from: date, dateStyle: .none, timeStyle: .medium)
  35. @unknown default:
  36. break // Do nothing
  37. }
  38. }
  39. public override func dateChanged(_ sender: UIDatePicker) {
  40. super.dateChanged(sender)
  41. delegate?.datePickerTableViewCellDidUpdateDate(self)
  42. }
  43. }