Skip to content

Instantly share code, notes, and snippets.

@dedeexe
Created October 28, 2017 19:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dedeexe/4878f78d7e1d5fe8b372ef84de629b59 to your computer and use it in GitHub Desktop.
Save dedeexe/4878f78d7e1d5fe8b372ef84de629b59 to your computer and use it in GitHub Desktop.
Limit picker to not accept a date lesser than today
// DatePicker.swift
// DatePicker Limit
// Author: Dede
// E-mail: dede.exe@gmail.com
import UIKit
import PlaygroundSupport
var str = "Hello, playground"
class DatePickerViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
createDatePicker()
}
func createDatePicker() {
let datePicker = UIDatePicker()
datePicker.frame.origin.x = 0.0
datePicker.frame.origin.y = 0.0
datePicker.addTarget(self, action: #selector(changeValue), for: UIControlEvents.valueChanged)
datePicker.datePickerMode = .date
self.view.addSubview(datePicker)
}
@IBAction func changeValue(sender: UIDatePicker)
{
//Get time Now, and convert to a NSCalendar
//Specify the minimun date if you want.
let now = Date()
let nowCalendar = Calendar.current
let nowComponents = nowCalendar.dateComponents([.day, .month, .year], from: now)
//Compare if date is lesser than now and then create a new date
if nowCalendar.compare(sender.date, to: now, toGranularity: Calendar.Component.day) == ComparisonResult.orderedAscending
{
var dateCalendar = Calendar.current
var dateComponents = dateCalendar.dateComponents([.day, .month, .year], from: sender.date)
guard let year = nowComponents.year else { return }
dateComponents.year = year + 1
let newDate = dateCalendar.date(from:dateComponents)
sender.date = newDate!
}
}
}
let viewController = DatePickerViewController()
PlaygroundPage.current.liveView = viewController
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment