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

Strange date picker behaviour Xcode, swift 3

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

@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 可能 return 99 秒、62 秒、67 秒等值。它完全是随机的。

也许我不完全理解 .countDownDuration 功能的工作原理,但是根据我阅读的所有内容,这应该 return 为 60 秒的值。

如有任何想法和建议,我们将不胜感激,谢谢。

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

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

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

timeAmount = (1*60) + 25

这将解决您的问题。

  1. 转到您的 Storyboard 和 select UIDatapicker。导航到属性检查器中的日期选项。

  2. 单击下拉菜单并将其从 当前日期 更改为 自定义

  3. 您将看到一个新的文本字段,将当前时间作为自定义日期。

  4. 只需将第二个字段更改为 00。

  5. 运行 App 现在。现在它会将 0 作为秒的值,您将能够根据您在日期选择器中选择的时间正确地看到秒值。

希望这能解决您的问题。