2016-03-22 2 views
3

enter image description here У меня есть два поля, называемых датой и временем. Я создаю DatePicker с помощью этого кодаВремя от времени datePicker В соответствии с выбранной датой swift

var selectedDate : NSDate! 
func date_picker2(textField: UITextField) 
    { 
     var toolbar1:UIToolbar = UIToolbar(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, 40)) 
     var done:UIBarButtonItem = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.Plain, target:self, action: Selector("cancelBtnClicked1:")) 
     done.tag = 203 
     var cancel:UIBarButtonItem = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: Selector("cancelBtnClicked1:")) 

     cancel.tag = 202 


    var space:UIBarButtonItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: nil, action: nil) 
    toolbar1.items = [cancel,space,done] 
    toolbar1.barTintColor = UIColor(red: 23.0/255.0, green: 174.0/255.0, blue: 202.0/255.0, alpha: 1) 
    toolbar1.tintColor = UIColor.whiteColor() 
    txt_Dob.inputAccessoryView = toolbar1 
    txt_birthTime.inputAccessoryView = toolbar1 

    datePicker = UIDatePicker(frame: CGRectMake(toolbar1.frame.size.width - 65, 0, 0, 300)) 
    let currentCalendar = NSCalendar.currentCalendar() 

    let dateComponents = NSDateComponents() 
    dateComponents.year = -80 
    datePicker.maximumDate = NSDate() 


    if txt_Dob.isFirstResponder() 
    { 
     datePicker.datePickerMode = UIDatePickerMode.Date 
    } 
    if txt_birthTime.isFirstResponder() 
    { 
     datePicker.datePickerMode = UIDatePickerMode.Time 
     println("selectedDate: \(selectedDate)") 
     if selectedDate == NSDate(){ 
      datePicker.maximumDate = NSDate(timeIntervalSinceNow:0) 
     } 
    } 

    datePicker.timeZone = NSTimeZone.localTimeZone() 
    datePicker.locale = NSLocale.currentLocale() 
    datePicker.calendar = NSCalendar.currentCalendar() 
    datePicker.backgroundColor = UIColor.whiteColor() 
    txt_Dob.inputView = datePicker 
    txt_birthTime.inputView = datePicker 
} 

func cancelBtnClicked1(sender:UIButton!) 
{ 
    var btnTag = sender.tag 

    if btnTag == 203 
    { 
     if(txt_Dob.isFirstResponder()) 
     { 
      if sender.tag == 203 
      { 
       var dateFormatter = NSDateFormatter() 
       dateFormatter.dateFormat = "dd-MM-yyyy" 
       txt_Dob.text = dateFormatter.stringFromDate(datePicker.date) 

      } 
     } 
     else if(txt_birthTime.isFirstResponder()) 
     { 
      if sender.tag == 203 
      { 
       var dateFormatter = NSDateFormatter() 
       dateFormatter.dateFormat = "HH:mm" 
       txt_birthTime.text = dateFormatter.stringFromDate(datePicker.date) 
       } 
     } 
     txt_Dob.resignFirstResponder() 
     txt_birthTime.resignFirstResponder() 
    } 
    else 
    { 
     self.view.endEditing(true) 
    } 
} 

теперь я хочу, что если я выбрать сегодня DatePicker должен позволить мне занять время до сих пор, но если я выбрать дату позавчера, он должен позволить мне в любое время.

Я не понимаю, как это сделать. Может ли кто-нибудь предложить мне, как это сделать?

Спасибо ..

ответ

2

Просто обновите максимальную дату в случае timepicker и матч за текущую дату, как:

dateComponents.hour = 23 
dateComponents.minute = 59 
dateComponents.second = 59 

datePicker.maximumDate = currentCalendar?.dateByAddingComponents(components, toDate: NSDate(), options: NSCalendarOptions()) 

if txt_Dob.isFirstResponder() 
{ 
    datePicker.datePickerMode = UIDatePickerMode.Date 
} 
if txt_birthTime.isFirstResponder() 
{ 
    datePicker.datePickerMode = UIDatePickerMode.Time 
    if selectedDate == NSDate(){ 
    datePicker.maximumDate = NSDate(timeIntervalSinceNow:0) 
    } 
} 

Вы должны обновить SelectedDate, когда пользователь выбирает дату из даты txt_Dob подборщика.

if(txt_Dob.isFirstResponder()) 
    { 
     if sender.tag == 203 
     { 
      var dateFormatter = NSDateFormatter() 
      dateFormatter.dateFormat = "dd-MM-yyyy" 
      txt_Dob.text = dateFormatter.stringFromDate(datePicker.date) 
      selectedDate = datePicker.date 
      txt_birthTime.text = "" 
     } 
    } 
+0

нет .. это не позволяет мне выбрать какое-либо время. сейчас я выбираю время в ПМ. но это не позволяет @ Muhammad Yawar Ali –

+0

Я обновил свой код, как вы сказали. @Muhammad Yawar Ali –

+0

Вы обновляете выбранную переменную Date date с датой, выбранной из txt_Dob datepicker? Если вы просто хотите проверить комментарий timepicker, условие if для выбранного кода и проверки. –

Смежные вопросы