如何在不滚动选择器视图的情况下选择当前时间

Posted

技术标签:

【中文标题】如何在不滚动选择器视图的情况下选择当前时间【英文标题】:how to Select current time without scrolling picker view 【发布时间】:2021-12-26 11:45:55 【问题描述】:

如果不滚动选择器视图,我无法选择当前时间。

我正在这样做-:

@objc func dateChanged(_ sender: UIDatePicker?) 
        let dateFormatter = DateFormatter()
        dateFormatter.timeStyle = .short
        dateFormatter.dateFormat = "HH:mm"
        if let date = sender?.date 
            reminderLbl.text = dateFormatter.string(from: date)
           

这是用于打开选择器视图 -:

 func openDatePickerView()
    datePicker = UIDatePicker.init()
    datePicker.autoresizingMask = .flexibleWidth
    datePicker.datePickerMode = .time
    if #available(ios 13.4, *) 
        datePicker.preferredDatePickerStyle = .wheels
        datePicker.backgroundColor = UIColor.white
     else 
        // Fallback on earlier versions
    
    datePicker.addTarget(self, action: #selector(self.dateChanged(_:)), for: .valueChanged)
    datePicker.frame = CGRect(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
    self.view.addSubview(datePicker)
    toolBar = UIToolbar(frame: CGRect(x: 0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
    toolBar.barStyle = .default
    toolBar.items = [UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil), UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.onDoneButtonClick))]
    toolBar.sizeToFit()
    self.view.addSubview(toolBar)

【问题讨论】:

你可能会为valueChanged事件调用这个函数,它不会在第一次被调用。调用 viewDidLoad 中的方法。 每次选择当前时间都会发生 如何选择当前时间??包含相关代码,然后解释问题。 openDatePickerView 结束时再次调用dateChanged(datePicker) 方法,这将使用当前日期初始填充文本字段。 我不明白问题出在哪里。你不就是想念datePicker.setDate(Date(), animated: false)吗? 【参考方案1】:

我已经附加了给你当前时间的功能。

func getTimeFrom(date: Date) 
    let dateFormatter = DateFormatter()
    dateFormatter.timeStyle = DateFormatter.Style.short
    dateFormatter.timeZone = TimeZone.current
    let time = dateFormatter.string(from: date)
    lbl_Time.text = time

-> 在 ViewDidLoad() 中调用上述函数并从选取器中传递当前日期,如下面的代码。

override func viewDidLoad() 
    super.viewDidLoad()
    getTimeFrom(date: datePicker.date)

-> 用于从日期选择器中选择的日期和时间。

@IBAction func actionPicker(_ sender: UIDatePicker) 
    getTimeFrom(date: sender.date)

【讨论】:

以上是关于如何在不滚动选择器视图的情况下选择当前时间的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不使用图像选择器的情况下从照片应用程序呈现默认的 iOS 编辑视图?

如何在不知道当前/主视图是啥的情况下从后台线程打开新视图?

如何在不使当前视图颤动的情况下实现这种幻灯片效果

在不限制滚动的情况下放大当前用户在 MapView 上的位置?

如何在不重置其当前状态的情况下从一个视图控制器到自身进行转场?

如何在不发送错误的情况下使按钮转到另一个视图控制器?