You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.7 KiB

  1. //
  2. // DatePickerViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 01/10/2018.
  6. // Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class DatePickerViewController: UIViewController {
  10. @IBOutlet weak var fromTextfield: UITextField!
  11. @IBOutlet weak var toTextfield: UITextField!
  12. var completion: ((_ from: String?, _ to: String?) -> ())?
  13. var fromDate: String?
  14. var toDate: String?
  15. var _fromDate: Date? {
  16. didSet {
  17. self.toDatePicker.minimumDate = _fromDate
  18. self.toDatePicker.maximumDate = Date()
  19. }
  20. }
  21. var _toDate: Date?
  22. let fromDatePicker = UIDatePicker()
  23. let toDatePicker = UIDatePicker()
  24. override func viewDidLoad() {
  25. super.viewDidLoad()
  26. self.setupToDatePicker()
  27. self.setupFromDatePicker()
  28. self.fromDatePicker.date = Date()
  29. self.handleFromDatePicker(sender: fromDatePicker)
  30. // Do any additional setup after loading the view.
  31. }
  32. // IBActions
  33. @IBAction func cancel(_ sender: Any) {
  34. self.view.endEditing(true)
  35. self.dismiss(animated: true, completion: nil)
  36. }
  37. @IBAction func searcg(_ sender: UIButton) {
  38. self.view.endEditing(true)
  39. self.dismiss(animated: true, completion: {
  40. self.completion?(self.fromDate, self.toDate)
  41. })
  42. }
  43. // private functions
  44. private func setupFromDatePicker() {
  45. self.fromDatePicker.datePickerMode = .date
  46. self.fromTextfield.inputView = fromDatePicker
  47. fromDatePicker.maximumDate = Date()
  48. self.fromDatePicker.addTarget(self, action: #selector(handleFromDatePicker(sender:)), for: .valueChanged)
  49. }
  50. @objc private func handleFromDatePicker(sender: UIDatePicker) {
  51. self._fromDate = sender.date
  52. let dateFormatter = DateFormatter()
  53. dateFormatter.dateFormat = AppConstants.dateFormat
  54. let date = dateFormatter.string(from: sender.date)
  55. self.fromTextfield.text = date
  56. self.fromDate = date
  57. }
  58. private func setupToDatePicker() {
  59. self.toDatePicker.datePickerMode = .date
  60. self.toTextfield.inputView = toDatePicker
  61. toDatePicker.maximumDate = self._fromDate
  62. self.toDatePicker.addTarget(self, action: #selector(handleToDatePicker(sender:)), for: .valueChanged)
  63. }
  64. @objc private func handleToDatePicker(sender: UIDatePicker) {
  65. self._toDate = sender.date
  66. let dateFormatter = DateFormatter()
  67. dateFormatter.dateFormat = AppConstants.dateFormat
  68. let date = dateFormatter.string(from: sender.date)
  69. self.toTextfield.text = date
  70. self.toDate = date
  71. }
  72. }