Last active
January 22, 2019 16:02
-
-
Save shishirthedev/ad26703c30bd3fb6e529408c0e1600c9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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