DateAndDurationTableViewCell.swift 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. dateLabel.textColor = .secondaryLabel
  15. }
  16. }
  17. private lazy var durationFormatter: DateComponentsFormatter = {
  18. let formatter = DateComponentsFormatter()
  19. formatter.allowedUnits = [.hour, .minute]
  20. formatter.unitsStyle = .short
  21. return formatter
  22. }()
  23. public override func updateDateLabel() {
  24. switch datePicker.datePickerMode {
  25. case .countDownTimer:
  26. dateLabel.text = durationFormatter.string(from: duration)
  27. case .date:
  28. dateLabel.text = DateFormatter.localizedString(from: date, dateStyle: .medium, timeStyle: .none)
  29. case .dateAndTime:
  30. dateLabel.text = DateFormatter.localizedString(from: date, dateStyle: .short, timeStyle: .short)
  31. case .time:
  32. dateLabel.text = DateFormatter.localizedString(from: date, dateStyle: .none, timeStyle: .medium)
  33. @unknown default:
  34. break // Do nothing
  35. }
  36. }
  37. public override func dateChanged(_ sender: UIDatePicker) {
  38. super.dateChanged(sender)
  39. delegate?.datePickerTableViewCellDidUpdateDate(self)
  40. }
  41. }