birthdate iphone objective-c uidatepicker

iphone - birthdate - textfield datepicker swift



UIDatePicker-En la fecha cambiada (4)

Acabo de empezar a usar UIDatePicker en mi aplicación de iPad, pero ¿hay alguna forma de verificar cuándo se ha cambiado la fecha?

Quiero hacer algo cuando se cambia la fecha. Espero que puedas ayudar, gracias.


Cuando está configurado correctamente, un objeto UIDatePicker envía un mensaje de acción cuando un usuario termina de girar una de las ruedas para cambiar la fecha o la hora; el evento de control asociado es UIControlEventValueChanged.

por lo que necesita agregar su clase para manejar el evento UIControlEventValueChanged en su selector:

[picker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged]; ... - (void) dateChanged:(id)sender{ // handle date changes }


Versión Swift 3:

override func viewDidLoad() { super.viewDidLoad() if sYourSelectedDate == "" { if let plist = Plist(name: "YourPlistName") { sYourSelectedDate = plist.getSingleValueInPlistFile(sFieldName: "yourSelectedDate")! } } if sYourSelectedDateTime == "" { if let plist = Plist(name: "YourPlistName") { sYourSelectedDateTime = plist.getSingleValueInPlistFile(sFieldName: "yourSelectedDateTime")! } } // add dateTimePickerChanged event (e.g., if device is powered down, values get saved) self.dateTimePicker.addTarget(self, action: #selector(dateTimeChanged), for: .valueChanged); // set min and max dates of datetimePicker // subtracting 1 minute from current time let currentTempDate = NSDate() let newDate = currentTempDate.addingTimeInterval(-1 * 60); let currentDate = newDate; let calendar: NSCalendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)! calendar.timeZone = NSTimeZone(name: "US/Eastern")! as TimeZone let components: NSDateComponents = NSDateComponents() components.calendar = calendar as Calendar components.year = -1 let minDate: NSDate = calendar.date(byAdding: components as DateComponents, to: currentDate as Date, options: NSCalendar.Options(rawValue: 0))! as NSDate let maxDate: NSDate = currentDate as NSDate self.dateTimePicker.minimumDate = minDate as Date self.dateTimePicker.maximumDate = maxDate as Date //print("minDate: /(minDate)") //print("maxDate: /(maxDate)") if(sYourSelectedDateTime == "") { // subtracting 1 minute from current time let currentTempDate = NSDate() let newDate = currentTempDate.addingTimeInterval(-1 * 60); let currentDate2 = newDate; let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MM/dd/yyyy h:mm a" calendar.timeZone = NSTimeZone(name: "US/Eastern")! as TimeZone let userCalendar = Calendar.current let requestedComponents: Set<Calendar.Component> = [ .year, .month, .day, .hour, .minute ] let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDate2 as Date) let iPhoneDateComponents = NSDateComponents() iPhoneDateComponents.year = dateTimeComponents.year!; iPhoneDateComponents.month = dateTimeComponents.month!; iPhoneDateComponents.day = dateTimeComponents.day!; iPhoneDateComponents.hour = dateTimeComponents.hour!; iPhoneDateComponents.minute = dateTimeComponents.minute!; iPhoneDateComponents.timeZone = NSTimeZone(name: "US/Eastern") as TimeZone? let iPhoneDate = calendar.date(from: iPhoneDateComponents as DateComponents)! self.dateTimePicker.date = iPhoneDate; sYourInitialDateTime = dateFormatter.string(from: self.dateTimePicker.date); if let plist = Plist(name: "YourPlistFile") { plist.editSingleValueInPlistFile(dictString: "YourPlistFile", sFieldName: "yourInitialDateTime", sValue: sYourInitialDateTime) } } else { let dateFormatter: DateFormatter = DateFormatter() dateFormatter.dateFormat = "MM/dd/yyyy h:mm a" let dateObj = dateFormatter.date(from: sYourSelectedDateTime) self.dateTimePicker.date = dateObj! } } func dateTimeChanged(picker: UIDatePicker) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "MM/dd/yyyy" sYourSelectedDate = dateFormatter.string(from: picker.date); dateFormatter.dateFormat = "MM/dd/yyyy h:mm a" sYourSelectedDateTime = dateFormatter.string(from: picker.date); if (sYourSelectedDateTime == sYourInitialDateTime) { sYourSelectedDate = ""; sYourSelectedDateTime = ""; } if let plist = Plist(name: "YourPlistFile") { plist.editSingleValueInPlistFile(dictString: "YourPlistName", sFieldName: "yourSelectedDate", sValue: sYourSelectedDate) plist.editSingleValueInPlistFile(dictString: "YourPlistName", sFieldName: "yourSelectedDateTime", sValue: sYourSelectedDateTime) } else { print("Unable to get Plist") } print(sYourSelectedDate); print(sYourSelectedDateTime); }


Versión Swift 4:

Configuración de UIDatePicker:

let datePicker = UIDatePicker() datePicker.datePickerMode = .date dateTextField.inputView = datePicker datePicker.addTarget(self, action: #selector(datePickerChanged(picker:)), for: .valueChanged)

Función:

@objc func datePickerChanged(picker: UIDatePicker) { print(picker.date) }

Si te das cuenta, Swift 4 requiere @objc en la función si vas a usar #selector ()


versión rápida

override func viewDidLoad() { super.viewDidLoad() let picker = UIDatePicker(frame: CGRectMake(0, 0, 200, 200)) picker.addTarget(self, action: #selector(datePickerChanged(_:)), forControlEvents: .ValueChanged) view.addSubview(picker) } func datePickerChanged(picker: UIDatePicker) { print(picker.date) }