/
MATimeViewController.m
97 lines (80 loc) · 2.63 KB
/
MATimeViewController.m
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//
// MATimeViewController.m
// Move alarm
//
// Created by Daniel Sullivan on 10/20/13.
//
#import "MATimeViewController.h"
#import "Alarm+Extensions.h"
#import "NSManagedObject+Extensions.h"
#import "Location+Extensions.h"
#import "MADebugMacros.h"
@interface MATimeViewController ()
@property NSNumber *hour;
@property NSNumber *minute;
@property (readonly) NSUInteger numberOfHours;
@property (readonly) NSUInteger numberOfMinutes;
- (void) resetTimePickerToMiddle:(NSUInteger)hour minutes:(NSUInteger)minutes;
@end
@implementation MATimeViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
#pragma mark = View lifecycle methods
- (void)viewDidLoad
{
[super viewDidLoad];
_numberOfHours = 24;
_numberOfMinutes = 60;
self.hour = self.alarm.hour;
self.minute = self.alarm.minute;
[self resetTimePickerToMiddle:[self.hour integerValue] minutes:[self.minute integerValue]];
}
- (void)viewWillDisappear:(BOOL)animated
{
self.hour = [NSNumber numberWithUnsignedLong:[self.timePickerView selectedRowInComponent:0] % self.numberOfHours];
self.minute = [NSNumber numberWithUnsignedLong:[self.timePickerView selectedRowInComponent:1] % self.numberOfMinutes];
self.alarm.hour = self.hour;
self.alarm.minute = self.minute;
[super viewWillDisappear:animated];
}
- (void) resetTimePickerToMiddle:(NSUInteger)hour minutes:(NSUInteger)minutes
{
[self.timePickerView selectRow:((UINT16_MAX)/(2 * self.numberOfHours) * self.numberOfHours) + hour inComponent:0 animated:NO];
[self.timePickerView selectRow:((UINT16_MAX)/(2 * self.numberOfMinutes) * self.numberOfMinutes) + minutes inComponent:1 animated:NO];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - UIPickerViewDataSource methods
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
// We want to recreate the circular scrolling that the default clock app has
return UINT16_MAX;
}
#pragma mark - UIPickerViewDelegate methods
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
NSUInteger displayNumber = 0;
if (component == 0)
{
displayNumber = row % self.numberOfHours;
}
else
{
displayNumber = row % self.numberOfMinutes;
}
return [NSString stringWithFormat:@"%lu", (unsigned long)displayNumber];
}
@end