我有一个弹出式视图控制器,如上图所示 . 在 viewDidLoad
中,我设置了选择器视图的最小日期(Date()),在故事板中,我将间隔时间设置为15分钟 . 这是我使用的代码
class DateTimePickerVC: UIViewController {
@IBOutlet var dateTimePickerView: UIDatePicker!
var selectedDateAndTime : Date?
override func viewDidLoad() {
super.viewDidLoad()
// to make live update of selected date
dateTimePickerView.addTarget(self, action: #selector(DateTimePickerVC.datePickerValueChanged), for: UIControl.Event.valueChanged)
// minimum date is now
dateTimePickerView.minimumDate = Date()
// set initial value, to avoid nil value
selectedDateAndTime = dateTimePickerView.date
}
@objc func datePickerValueChanged (datePicker: UIDatePicker) {
selectedDateAndTime = datePicker.date
}
@IBAction func pickedButtonDidPressed(_ sender: Any) {
// send date 'selectedDateAndTime' to other VC
}
}
我在这里遇到两个问题:
-
假设用户在16:28打开弹出的datePickerVC . 我希望弹出的最短日期和时间将是“今天16:30”,但在我的情况下是“今天16:15” . 怎么解决这个问题?
-
以避免
selectedDateAndTime
的nil值,在viewDidLoad
我设置selectedDateAndTime = dateTimePickerView.date
,所以我希望当用户立即点击保存按钮并将date
发送到其他VC而不滚动日期选择器时,它将获得datePicker中显示的最小日期 . 假设用户在16:08打开弹出,我希望所选日期是datePickerView(今天16:15)显示的最小日期和时间,但我得到的实际日期值是(今天16:08),因为我设置了datePicker.minimumDate = Date()
(现在) . 如何获取datePicker视图上显示的最小日期?
2 回答
用法:
我认为你必须意识到为什么它显示16:15,因为时间(16:28)仍然在逻辑上小于16:30而且我没有任何逻辑意义
通过
minimumDate
的声明:由于
minimumDate
具有 get 属性,因此您可以使用以下方法获取最小日期: