【问题标题】:Set a var to today's date将 var 设置为今天的日期
【发布时间】:2015-04-21 23:16:43
【问题描述】:

我有一个不应允许用户选择未来日期的 datePicker 字段。我想我会使用 var maximumDate: NSDate?然后将其设置为等于我已经定义为 isToday 的 var (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)
}

【问题讨论】:

    标签: swift date datepicker


    【解决方案1】:

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

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

    这一行也没有意义:

    var isToday = NSDate
    

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

    这个名字也很混乱。对于以“is”开头的变量名,我希望它是一个布尔值,如果某个日期是今天,则为 true,否则为 false。

    我建议改用这个:

    let today = NSDate()
    

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

    【讨论】:

    • 感谢您的帮助。正如您从我的 var isToday 错误中可以看出的那样,我对此很陌生。我不确定您所说的“您的 viewWillAppear 方法”是什么意思。我在代码中的任何地方都看不到这一点。另外,当您说“现有日期选择器”时,您是指我链接到新 IBOutlet 的那个,还是我用什么都不做的代码制作的那个(这可以解释为什么我不能让它做任何事情)问)。
    • 你应该添加一个 viewWillAppear: 方法,如果你没有(请参阅 Xcode 文档的签名。是的,我说的是在界面生成器中定义并连接到IBOutlet,不是您在代码中创建的(没有任何用处)
    【解决方案2】:

    您只需将这一行添加到您的 handleDatePicker 方法中即可将您的日期选择器属性 maximumDate 设置为现在(NSDate()):

    sender.maximumDate = NSDate()
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多