我有一个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)
}
答案 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()