如何在Swift中为日期选择器设置特定的默认时间

问题描述 投票:15回答:2

是否有任何方法可以设置日期选择器以显示加载时的特定时间?我有四个日期选择器实例,这些实例是使用GitHub中的squimer / datePickerDialog子类从四个文本字段(开始时间,完成时间,开始日期和完成日期)启动的,并在UIAlertView中弹出。

在我的应用中,默认开始时间为7:00 AM,默认结束时间为5:00 PM,让用户在这些时间附近​​进行调整。

我所能看到的是,您可以将datePicker.defaultDate设置为currentDate,minimumDate或maximumDate,并且只能设置一次。是否可以在从ViewController进行的调用中将defaultDate设置为sTime =“ 07:00”和fTime =“ 17:00”的硬编码字符串?

任何帮助将不胜感激。

EDIT:这就是我从viewController调用子类的方式

@IBAction func setFT(sender: UITextField) {
    resignKeyboardCompletely(sender)
    DatePickerDialog().show("Pick a Finish Time", doneButtonTitle: "Done", cancelButtonTitle: "Cancel", datePickerMode: .Time) {
        (timeFinish) -> Void in
        self.dateFormatter.dateFormat = "HH:mm"
        let finTime = self.dateFormatter.stringFromDate(timeFinish)
        self.finishTime.text = finTime
    }
    defaults.setObject(finishTime.text, forKey: "finishTime")
    print(finishTime.text)
}

注意,在整个过程中,我还试图通过NSUser Defaults保持持久性。

swift uidatepicker
2个回答
33
投票

您是否正在通过字符串设置时间。如果是这种情况,您可以使用这样的日期格式化程序。

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat =  "HH:mm"

let date = dateFormatter.dateFromString("17:00")

datePicker.date = date

Picker class 添加初始化

init(time:String) {
    super.init(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height))

    setupView()
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat =  "HH:mm"

    if let date = dateFormatter.dateFromString("17:00") {
        datePicker.date = date
    }
}

0
投票

我到达这里的原因似乎是设置开始日期无效。原来,您需要在设置最小和最大日期之后设置初始日期。

© www.soinside.com 2019 - 2024. All rights reserved.