奇怪的日期选择器行为Xcode,swift 3

时间:2017-04-13 05:47:40

标签: swift time timer datepicker uilocalnotification

我当前的项目是一个计时器,它使用日期选择器来设置用户在计时器关闭之前想要的时间(例如1分钟,6小时和2分钟等)。问题在于日期选择器认为已设置的时间量。下面是我用来设置时间的代码。

@IBOutlet weak var datePicker: UIDatePicker!

var timeAmount:Double = 0

@IBAction func startButton() {
    timeAmount = Double(datePicker.countDownDuration)
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeAmount, repeats: false)
}

在这里可以看到函数startButton将timeAmount的值设置为为日期选择器设置的时间量。然后将此timeAmount值用作本地通知中的时间。

问题是datePicker.countDownDuration永远不会正确。如果设置为一分钟,则timeAmount可能会返回99秒,62秒,67秒等值。这完全是随机的。

也许我并不完全理解.countDownDuration功能是如何工作的,但是从我读过的所有内容来看,这应该返回60秒的值。

非常感谢您对此事的任何想法和建议,谢谢。

1 个答案:

答案 0 :(得分:2)

默认情况下,UIDatePicker将采用当前 second 值进行计算。

timeAmount = (number of minutes selected in picker * 60) + current time second value.

例如:
如果当前时间是13:40:25(下午1点40分25秒)并且您在日期选择器中选择了一分钟,则在这种情况下timeAmount的值为 85

timeAmount = (1*60) + 25

这将解决您的问题。

  1. 转到故事板并选择UIDatapicker。导航到“属性”检查器中的“日期”选项。 enter image description here

  2. 点击下拉菜单,然后从当前日期将其更改为自定义enter image description here

  3. 您将看到一个新文本字段,其中当前时间为自定义日期。 enter image description here

  4. 只需将第二个字段更改为00即可。 enter image description here

  5. 立即运行应用程序。现在,它将以0作为第二个值,您将能够根据您在日期选择器中选择的时间正确查看秒值。

  6. 希望这能解决您的问题。