Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to accept only Month and Year using DatePicker in iOS

I am building an app using swift and in that app there is one field for accepting expiry date for Debit card for payment purpose. How can I accept only month and year by using DatePicker in Swift.

If it is not possible using datepicker then please suggest any another way.

Thank you in advance.

like image 778
Chetan Purohit Avatar asked Sep 15 '15 07:09

Chetan Purohit


People also ask

How to set only month and year in DatePicker?

Set changeMonth and changeYear to true so that Month and Year appear as Dropdown. Set date format to "MM yy". jQuery DatePicker has "onClose" event, which is called when Datepicker gets closed. So using this event, fetch the selected Month and Year and setDate of Datepicker.

How can I increase my DatePicker size?

By default DatePicker has standard height and width (height: '30px' and width: '143px'). You can change this height and width by using height and width property respectively. $(function () { // creates DatePicker from input $("#datePicker").


3 Answers

Choice-1

Objective-C

yourDatepicker.datePickerMode = UIDatePickerModeDate;

Swift

 yourDatepicker.datePickerMode = UIDatePickerMode.Date

Swift3

yourDatepicker.datePickerMode = .date

the another modes are

  • UIDatePickerModeTime,
  • UIDatePickerModeDate,
  • UIDatePickerModeDateAndTime,
  • UIDatePickerModeCountDownTimer

Choice-2

the above method not working well, then check this link

like image 154
Anbu.Karthik Avatar answered Oct 05 '22 03:10

Anbu.Karthik


Not really an answer but an alternative: why not use a picker for month an a picker for year like most apps do (also on websites the equivalent a popupmenu is used)

like image 35
Glenn Avatar answered Oct 05 '22 01:10

Glenn


I suggest you use this link: https://github.com/bendodson/MonthYearPickerView-Swift

It is saving my time to validate valid dates months

 let expiryDatePicker = MonthYearPickerView()

private func pickADate() {
    self.invitationTypeTemp = self.expiredDetailOutlet.text ?? "unknown error"

    //FORMAT DATE
   //        expiryDatePicker.datePickerMode = .date

    expiryDatePicker.backgroundColor = UIColor.white
    expiryDatePicker.setValue(UIColor.black, forKey: "textColor")
    expiryDatePicker.autoresizingMask = .flexibleWidth
    expiryDatePicker.contentMode = .center
    expiryDatePicker.frame = CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
    self.view.addSubview(expiryDatePicker)

    toolBar = UIToolbar.init(frame: CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
    toolBar.barStyle = .default
    toolBar.isTranslucent = true
    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(onDoneButtonTappedDateExpired))
    let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
    let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(onCancelButtonTappedDateExpired))

    toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
    toolBar.isUserInteractionEnabled = true
    self.view.addSubview(toolBar)

    //DISABLE RIGHT ITEM & LEFT ITEM
   //        disableCancelAndSaveItems()

    //DISABLED SELECTION FOR ALL CELLS
   //        ableToSelectCellsAndButtons(isAble: false)

    //DISABLE RIGHT ITEM & LEFT ITEM
    isEnableCancelAndSaveItems(isEnabled: false)

    //SHOW GREY BACK GROUND
    showGreyOutView(isShow: true)
    expiryDatePicker.onDateSelected = { (month: Int, year: Int) in
        let string = String(format: "%02d/%d", month, year)
        self.expiredDetailOutlet.text = string
        NSLog(string) // should show something like 05/2015
    }
}
like image 23
coders Avatar answered Oct 05 '22 01:10

coders