我有一个日期选择器,在它上面有1个按钮,显示为“完成”。单击此按钮后,我将打印日期选择器日期。
当我滚动日期选择器和打印日期时,它可以正常工作。下面是我的代码
print("date selected===\(myDatePicker.date)")
当我不滚动日期选择器并单击完成按钮时,就会出现问题。
方案是我将datepicker maximumDate设置为2000年(currentYear-18)。下面是我使用的代码。
var dayComp = DateComponents()
currDate = Date()
dayComp.year = -18
currDate = calendar.date(byAdding: dayComp, to: currDate)!
mDateFrom.maximumDate = currDate
现在,由于datepicker可以追溯到18年,所以我看到日期选择器的日期为2000年7月25日,但是当我单击“完成”按钮时,它仅打印今天的日期。
只有当我滚动日期选择器时,它才能给出正确的日期。
知道为什么会这样吗?
答案 0 :(得分:0)
我相信,一旦您基于所需的日期创建了datePicker,就需要设置日期选择器显示的默认日期。因为此属性的default value
是创建UIDatePicker
对象的日期,所以这就是为什么只要打印日期选择器的值而不会旋转,它就会向您显示当前日期,但是如果您旋转datePicker,该属性已正确设置,可以正确打印日期。
//you can use date property to set or get
myDatePicker.date = yourFormattedDateHere
如果不希望在设置日期时出现任何动画,请通过将轮子旋转到新的日期和时间来设置date
属性动画 date picker
,请使用setDate(_:animated:)
方法,为动画参数传递false。