如何在 swift 3.0 中制作时间选择器视图?

Posted

技术标签:

【中文标题】如何在 swift 3.0 中制作时间选择器视图?【英文标题】:How to make a time picker view in swift 3.0? 【发布时间】:2016-09-18 05:44:59 【问题描述】:

我在 Swift 中成功地使 datePicker 视图覆盖了我的 UITextField。但我需要时间以HH:MM:SS 的格式进行挑选。我对此一无所知。我需要及时申请所选时间UITextField。那么,如何在 Swift 中制作时间选择器?请参考下图。 swift 2.2 , 2.0 的答案也可以。非常感谢朋友们!

【问题讨论】:

【参考方案1】:

为 Swift 3 更新:

如果您想显示时间选择器,请使用以下 Swift 3 的代码行:

变量声明:

let timePicker = UIDatePicker()

方法定义:

func openTimePicker()  
    timePicker.datePickerMode = UIDatePickerMode.time
    timePicker.frame = CGRect(x: 0.0, y: (self.view.frame.height/2 + 60), width: self.view.frame.width, height: 150.0)
    timePicker.backgroundColor = UIColor.white
    self.view.addSubview(timePicker)
    timePicker.addTarget(self, action: #selector(yourViewControllerName.startTimeDiveChanged), for: UIControlEvents.valueChanged)


func startTimeDiveChanged(sender: UIDatePicker) 
    let formatter = DateFormatter()
    formatter.timeStyle = .short
    youtTextFieldName.text = formatter.string(from: sender.date)
    timePicker.removeFromSuperview() // if you want to remove time picker

【讨论】:

这个问题是......当你选择小时并且你有几秒钟的暂停时,它会自动关闭它。尝试执行此解决方案的任何人都可能希望在代码中添加一个标记,以检查是否完成编辑或使用此方法制作另一个视图控制器。代码工作。用户体验需要改进。投票 +1【参考方案2】:

datePickerMode 设置为time

斯威夫特 3

self.datePicker.datePickerMode = .time

Swift 2.3 或更低版本

self.datePicker.datePickerMode = .Time

注意:这将只允许您选择HoursMinutes,如果您想选择Seconds,您还需要自定义时间选择器。

【讨论】:

【参考方案3】:

为 Swift 5+ 添加

用于计时器(它不显示秒部分。)

@IBOutlet weak var timerPicker: UIDatePicker!
...
 self.timerPicker.datePickerMode = .countDownTimer
 print("countdown duration",  String(timerPicker.countDownDuration))

【讨论】:

以上是关于如何在 swift 3.0 中制作时间选择器视图?的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3.0 多个选择器视图无法识别数据源变量

Swift 3.0 字符串问题

如何在swift 3.0中隐藏连接的segue中的标签栏

如何在 Swift 中使用选择器视图值?

长按选择的 Swift 3.0 表格视图单元格

Swift 选择器输入值设置为指定的 url