@@ -25,8 +25,21 @@ class EmployeeDetailViewController: UIViewController {
2525
2626 @IBOutlet weak var middleNameStackView : UIStackView !
2727
28+ @IBOutlet weak var sliderStack : UIStackView !
29+
2830 var employee : Employee !
2931
32+ @IBOutlet weak var hoursInputSegmentControl : UISegmentedControl !
33+
34+ @IBOutlet weak var hourSlider : UISlider !
35+ @IBOutlet weak var minuteSlider : UISlider !
36+ @IBOutlet weak var hourLabel : UILabel !
37+ @IBOutlet weak var minuteLabel : UILabel !
38+
39+ let hapticFeedback = UINotificationFeedbackGenerator ( )
40+
41+ let selectionFeedback = UISelectionFeedbackGenerator ( )
42+
3043 override func viewDidLoad( ) {
3144 super. viewDidLoad ( )
3245
@@ -44,6 +57,18 @@ class EmployeeDetailViewController: UIViewController {
4457 idLabel. text = " \( employee. id) " // 4 spaces at the end for label rotation
4558 payRateLabel. text = String ( format: " $%.2f " , employee. payRate)
4659 payCheckLabel. text = String ( format: " $%.2f " , employee. getPaycheck ( hours: 1 , minutes: 0 ) )
60+
61+ // set up slider view
62+ sliderStack. isHidden = true
63+ hourSlider. maximumValue = 200
64+ hourSlider. minimumValue = 0
65+ minuteSlider. maximumValue = 59
66+ minuteSlider. minimumValue = 0
67+
68+ hourSlider. value = 1
69+ minuteSlider. value = 0
70+
71+ hapticFeedback. prepare ( )
4772 }
4873
4974 override func viewDidAppear( _ animated: Bool ) {
@@ -59,6 +84,9 @@ class EmployeeDetailViewController: UIViewController {
5984 payrateLabel. text = NSLocalizedString ( " pay rate label " , comment: " Pay rate label " )
6085 hoursWorkedLabel. text = NSLocalizedString ( " hours worked label " , comment: " Hours worked label " )
6186 paycheckLabel. text = NSLocalizedString ( " pay check label " , comment: " Pay check label " )
87+
88+ hoursInputSegmentControl. setTitle ( " Time Picker " , forSegmentAt: 0 )
89+ hoursInputSegmentControl. setTitle ( " Time Slider " , forSegmentAt: 1 )
6290 }
6391
6492 @IBAction func timeChanged( _ sender: UIDatePicker ) {
@@ -78,7 +106,37 @@ class EmployeeDetailViewController: UIViewController {
78106 let alert = UIAlertController ( title: NSLocalizedString ( " copied confirmation alert " , comment: " " ) , message: " " , preferredStyle: . alert)
79107 let action = UIAlertAction ( title: NSLocalizedString ( " Close message " , comment: " " ) , style: . default, handler: nil )
80108 alert. addAction ( action)
81- present ( alert, animated: true , completion: nil )
109+ present ( alert, animated: true ) {
110+ self . hapticFeedback. notificationOccurred ( . success)
111+ }
112+ }
113+
114+ @IBAction func hoursModeChanged( _ sender: UISegmentedControl ) {
115+ if sender. selectedSegmentIndex == 0 {
116+ hoursWorked. isHidden = false
117+ sliderStack. isHidden = true
118+ } else {
119+ selectionFeedback. prepare ( )
120+ hoursWorked. isHidden = true
121+ sliderStack. isHidden = false
122+ }
123+ }
124+
125+ @IBAction func sliderChanged( _ sender: UISlider ) {
126+ let value = Int ( sender. value)
127+ // if sender tag is 0, hour slider. if sender tag is 1, minute slider
128+ if sender. tag == 0 {
129+ hourLabel. text = String ( value) + " " + ( value == 1 ? " Hour " : " Hours " )
130+ } else {
131+ minuteLabel. text = String ( value) + " " + ( value == 1 ? " Minute " : " Minutes " )
132+ }
133+ let hour = Int ( hourLabel. text!. split ( separator: " " ) [ 0 ] ) !
134+ let minute = Int ( minuteLabel. text!. split ( separator: " " ) [ 0 ] ) !
135+ let paycheck = employee. getPaycheck ( hours: hour, minutes: minute)
136+ payCheckLabel. text = String ( format: " $%.2f " , paycheck)
137+
138+ // haptic feedback
139+ selectionFeedback. selectionChanged ( )
82140 }
83141
84142 override func prepare( for segue: UIStoryboardSegue , sender: Any ? ) {
0 commit comments