【问题标题】:Strange date picker behaviour Xcode, swift 3奇怪的日期选择器行为 Xcode,swift 3
【发布时间】:2023-03-16 14:05:01
【问题描述】:

我当前的项目是一个计时器,它使用日期选择器来设置用户想要在计时器关闭之前的时间量(比如 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 秒的值。

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

【问题讨论】:

    标签: swift time timer datepicker uilocalnotification


    【解决方案1】:

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

    timeAmount = (选择器中选择的分钟数 * 60) + 当前时间秒值。

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

    timeAmount = (1*60) + 25

    这将解决您的问题。

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

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

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

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

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

    希望这能解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多