| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // RepeatingScheduleValueTableViewCell.swift
- // Naterade
- //
- // Created by Nathan Racklyeft on 2/6/16.
- // Copyright © 2016 Nathan Racklyeft. All rights reserved.
- //
- import UIKit
- protocol RepeatingScheduleValueTableViewCellDelegate: DatePickerTableViewCellDelegate {
- func repeatingScheduleValueTableViewCellDidUpdateValue(_ cell: RepeatingScheduleValueTableViewCell)
- }
- class RepeatingScheduleValueTableViewCell: DatePickerTableViewCell, UITextFieldDelegate {
- weak var delegate: RepeatingScheduleValueTableViewCellDelegate?
- var timeZone: TimeZone! {
- didSet {
- dateFormatter.timeZone = timeZone
- datePicker.timeZone = timeZone
- }
- }
- private lazy var dateFormatter: DateFormatter = {
- let dateFormatter = DateFormatter()
- dateFormatter.dateStyle = .none
- dateFormatter.timeStyle = .short
- return dateFormatter
- }()
- override func updateDateLabel() {
- dateLabel.text = dateFormatter.string(from: date)
- }
- override func dateChanged(_ sender: UIDatePicker) {
- super.dateChanged(sender)
- delegate?.datePickerTableViewCellDidUpdateDate(self)
- }
- var value: Double = 0 {
- didSet {
- textField.text = valueNumberFormatter.string(from: value)
- }
- }
- var datePickerInterval: TimeInterval {
- return TimeInterval(minutes: Double(datePicker.minuteInterval))
- }
- var isReadOnly = false {
- didSet {
- if isReadOnly, textField.isFirstResponder {
- textField.resignFirstResponder()
- }
- }
- }
- lazy var valueNumberFormatter: NumberFormatter = {
- let formatter = NumberFormatter()
- formatter.numberStyle = .decimal
- formatter.minimumFractionDigits = 1
- return formatter
- }()
- @IBOutlet weak var dateLabel: UILabel!
- @IBOutlet weak var unitLabel: UILabel! {
- didSet {
- // Setting this color in code because the nib isn't being applied correctly
- unitLabel.textColor = .secondaryLabel
- }
- }
- @IBOutlet weak var textField: UITextField! {
- didSet {
- // Setting this color in code because the nib isn't being applied correctly
- textField.textColor = .label
- }
- }
- var unitString: String? {
- get {
- return unitLabel.text
- }
- set {
- unitLabel.text = newValue
- }
- }
- // MARK: - UITextFieldDelegate
- func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
- return !isReadOnly
- }
- func textFieldDidBeginEditing(_ textField: UITextField) {
- DispatchQueue.main.async {
- textField.selectedTextRange = textField.textRange(from: textField.beginningOfDocument, to: textField.endOfDocument)
- }
- }
- func textFieldDidEndEditing(_ textField: UITextField) {
- value = valueNumberFormatter.number(from: textField.text ?? "")?.doubleValue ?? 0
- delegate?.repeatingScheduleValueTableViewCellDidUpdateValue(self)
- }
- }
|