将var设置为今天的日期

时间:2015-04-21 23:16:44

标签: swift date datepicker

我有一个datePicker字段,不允许用户在将来选择日期。我想我会使用var maximumDate:NSDate?然后设置等于我已经定义的var是isToday(var maximumDate:NSDate?= isToday)。日期选择器已经出现(但在选中时不会返回日期)。现在我需要将日期选择器限制为仅今天或过去的任何日期。这是我写的方式。我目前在定义var isToday和var maximumDate:NSDate的第一行有错误? =今天。谢谢你的帮助。

var isToday = NSDate
var season = traSeason
var sport = traSport
var dispenseTo = ["Personnel", "Physician"]

var activeField = []

var datePickerView  : UIDatePicker = UIDatePicker()

@IBOutlet var userLabel: UILabel!
@IBOutlet var teamLabel: UILabel!

@IBOutlet var enterDate: UITextField!

@IBAction func dateTapped(sender: UITextField) {

    //code for what to do when date field is tapped
    datePickerView.datePickerMode = UIDatePickerMode.Date
    enterDate.inputView = datePickerView
    datePickerView.addTarget(self, action: Selector("handleDatePicker:"), forControlEvents: UIControlEvents.ValueChanged)

}

func handleDatePicker(sender: UIDatePicker) {
    var dateFormatter = NSDateFormatter()
    var maximumDate: NSDate? = isToday
    dateFormatter.dateFormat = "dd MMM yyyy"
    enterDate.text = dateFormatter.stringFromDate(sender.date)
}

2 个答案:

答案 0 :(得分:2)

您的代码没有意义。您正在创建一个全新的日期选择器,然后再从未在视图层次结构中安装它。您正在创建的日期选择器从不做任何事情。

相反,您应该在Interface Builder中创建一个日期选择器,并从该日期选择器控制拖动到视图控制器类的顶部,就在大括号内。这将导致IB提供创建IBOutlet。然后在viewWillAppear方法中,您可以在插座中配置EXISTING日期​​选择器以设置最大日期。

这条线也没有意义:

var isToday = NSDate

它应该做什么?看起来该变量将设置为NSDate

这个名字也令人困惑。使用以“is”开头的变量名称,我希望它是一个布尔值,如果某个日期是今天,则为true,否则为false。

我建议改用:

let today = NSDate()

该代码创建一个NSDate类型的常量,并将当前和日期和时间存储到其中。 (编译器可以推断出today是一个NSDate,因为这是NSDate() init函数返回的内容。)

答案 1 :(得分:1)

您只需将此行添加到handleDatePicker方法,即可将日期选择器属性maximumDate设置为now(NSDate()):

sender.maximumDate = NSDate()