forked from LoopKit/LoopKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDoubleRangeTableViewCell.swift
More file actions
80 lines (64 loc) · 2.43 KB
/
DoubleRangeTableViewCell.swift
File metadata and controls
80 lines (64 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//
// DoubleRangeTableViewCell.swift
// LoopKitUI
//
// Created by Michael Pangburn on 1/3/19.
// Copyright © 2019 LoopKit Authors. All rights reserved.
//
import UIKit
import LoopKit
protocol DoubleRangeTableViewCellDelegate: AnyObject {
func doubleRangeTableViewCellDidBeginEditing(_ cell: DoubleRangeTableViewCell)
func doubleRangeTableViewCellDidUpdateRange(_ cell: DoubleRangeTableViewCell)
}
class DoubleRangeTableViewCell: UITableViewCell {
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var minValueTextField: PaddedTextField! {
didSet {
minValueTextField.delegate = self
minValueTextField.addTarget(self, action: #selector(textFieldEditingChanged), for: .editingChanged)
}
}
@IBOutlet weak var maxValueTextField: PaddedTextField! {
didSet {
maxValueTextField.delegate = self
maxValueTextField.addTarget(self, action: #selector(textFieldEditingChanged), for: .editingChanged)
}
}
@IBOutlet weak var unitLabel: UILabel!
var numberFormatter = NumberFormatter()
var range: DoubleRange? {
get {
guard
let minValueString = minValueTextField.text,
let minValue = numberFormatter.number(from: minValueString)?.doubleValue,
let maxValueString = maxValueTextField.text,
let maxValue = numberFormatter.number(from: maxValueString)?.doubleValue
else {
return nil
}
return DoubleRange(minValue: minValue, maxValue: maxValue)
}
set {
guard let newValue = newValue else {
minValueTextField.text = nil
maxValueTextField.text = nil
return
}
minValueTextField.text = numberFormatter.string(from: newValue.minValue)
maxValueTextField.text = numberFormatter.string(from: newValue.maxValue)
}
}
weak var delegate: DoubleRangeTableViewCellDelegate?
@objc private func textFieldEditingChanged() {
delegate?.doubleRangeTableViewCellDidUpdateRange(self)
}
}
extension DoubleRangeTableViewCell: UITextFieldDelegate {
func textFieldDidBeginEditing(_ textField: UITextField) {
delegate?.doubleRangeTableViewCellDidBeginEditing(self)
}
func textFieldDidEndEditing(_ textField: UITextField) {
delegate?.doubleRangeTableViewCellDidUpdateRange(self)
}
}