Skip to content

Commit 0e77d36

Browse files
committed
Improve the data source setup lifecycle
1 parent 50bfb8d commit 0e77d36

1 file changed

Lines changed: 18 additions & 17 deletions

File tree

WatchKitTimePicker/TimePickerDataSource.swift

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,27 @@ public class TimePickerDataSource {
1616

1717
public var selectedTimeDidUpdate: ((Date) -> Void)?
1818

19-
public init(hoursPicker: WKInterfacePicker, minutesPicker: WKInterfacePicker, amPmPicker: WKInterfacePicker?, initiallySelectedDate: Date?) {
19+
public init(
20+
hoursPicker: WKInterfacePicker,
21+
minutesPicker: WKInterfacePicker,
22+
amPmPicker: WKInterfacePicker?)
23+
{
2024
self.hoursPicker = hoursPicker
2125
self.minutesPicker = minutesPicker
2226
self.amPmPicker = amPmPicker
23-
24-
setup(withInitiallySelectedDate: initiallySelectedDate)
2527
}
2628

2729

2830
// MARK: Setup
2931

30-
private lazy var timeFormatter: DateFormatter = {
31-
let formatter = DateFormatter()
32-
formatter.dateStyle = .none
33-
formatter.timeStyle = .short
34-
return formatter
35-
}()
36-
3732
private lazy var userHas24HourTimeEnabled: Bool = {
33+
let timeFormatter = DateFormatter()
34+
timeFormatter.dateStyle = .none
35+
timeFormatter.timeStyle = .short
36+
3837
let timeString = timeFormatter.string(from: Date())
3938
return !(timeString.contains(Locale.current.calendar.amSymbol)
40-
|| timeString.contains(Locale.current.calendar.pmSymbol))
39+
|| timeString.contains(Locale.current.calendar.pmSymbol))
4140
}()
4241

4342
private lazy var hourPickerOptions: [Int] = {
@@ -64,7 +63,7 @@ public class TimePickerDataSource {
6463
}
6564
}()
6665

67-
private func setup(withInitiallySelectedDate initiallySelectedDate: Date?) {
66+
public func setup(withInitiallySelectedDate initiallySelectedDate: Date?) {
6867
hoursPicker?.setItems(hourPickerOptions.map { hourValue in
6968
let pickerItem = WKPickerItem()
7069
pickerItem.title = "\(hourValue)"
@@ -113,7 +112,9 @@ public class TimePickerDataSource {
113112
minutesPicker?.setSelectedItemIndex(corresponsingMinuteIndex)
114113
selectedMinute = minutePickerOptions[corresponsingMinuteIndex]
115114

116-
if !userHas24HourTimeEnabled {
115+
if userHas24HourTimeEnabled {
116+
amPm = nil
117+
} else {
117118
if hours < 12 {
118119
amPmPicker?.setSelectedItemIndex(0)
119120
amPm = .am
@@ -132,9 +133,9 @@ public class TimePickerDataSource {
132133
case am, pm
133134
}
134135

135-
private var selectedHour: Int!
136-
private var selectedMinute: Int!
137-
private var amPm: AMPM?
136+
private var selectedHour: Int = 0
137+
private var selectedMinute: Int = 0
138+
private var amPm: AMPM? = .am
138139

139140
public func hourPickerUpdated(to index: Int) {
140141
selectedHour = hourPickerOptions[index]
@@ -196,7 +197,7 @@ public class TimePickerDataSource {
196197
}
197198

198199
public func selectedTime() -> Date {
199-
var hourIn24HourTime = selectedHour ?? 0
200+
var hourIn24HourTime = selectedHour
200201

201202
// if there's an option for am/pm, the user's in 12 hour time.
202203
// Need to do the necessary corrections.

0 commit comments

Comments
 (0)