Skip to content

Instantly share code, notes, and snippets.

@shishirthedev
Last active January 22, 2019 16:02
Show Gist options
  • Save shishirthedev/ad26703c30bd3fb6e529408c0e1600c9 to your computer and use it in GitHub Desktop.
Save shishirthedev/ad26703c30bd3fb6e529408c0e1600c9 to your computer and use it in GitHub Desktop.
import Foundation
import UIKit
protocol SSToolbarDatePickerViewDelegate: class {
func didTapDone(date: Date)
func didTapCancel()
}
class SSToolbarDatePickerView: UIDatePicker {
public private(set) var toolbar: UIToolbar?
public weak var toolbarDelegate: SSToolbarDatePickerViewDelegate?
override init(frame: CGRect) {
super.init(frame: frame)
self.commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.commonInit()
}
private func commonInit() {
// Date Picker View Config
self.datePickerMode = .date
// self.backgroundColor = UIColor.white
// self.setValue(UIColor.blue, forKey: "textColor")
// Creating Toolbar
let toolBar = UIToolbar()
toolBar.sizeToFit()
// Adding button with Toolbar
let doneButton = UIBarButtonItem(title: "Done",
style: .plain,
target: self,
action: #selector(self.doneTapped))
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace,
target: nil,
action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel",
style: .plain,
target: self,
action: #selector(self.cancelTapped))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
self.toolbar = toolBar
}
@objc func doneTapped() {
self.toolbarDelegate?.didTapDone(date: self.date)
}
@objc func cancelTapped() {
self.toolbarDelegate?.didTapCancel()
}
}
///////////////////// Use of Toolbar Date Picker View /////////////////////////////
import UIKit
class TestViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
let datePicker = SSToolbarDatePickerView()
override func viewDidLoad() {
super.viewDidLoad()
datePicker.toolbarDelegate = self
// datePicker.maximumDate = Date()
// datePicker.maximumDate = Date()
textField.inputView = datePicker
textField.inputAccessoryView = datePicker.toolbar
}
}
extension TestViewController: SSToolbarDatePickerViewDelegate {
func didTapDone(date: Date) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy"
let dateShow = dateFormatter.string(from: date)
textField.text = dateShow
self.view.endEditing(true)
}
func didTapCancel() {
self.view.endEditing(true)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment