我已将日期选择器设置为文本字段的输入 View 。日期选择器的最小日期和间隔分钟为 15。现在它给出了更改旋转值更改委托(delegate)的正确日期。但是,如果我不旋转选择器并点击默认首先选择的完成按钮,它只会给出当前日期。我希望它能给我选择器中默认显示的日期。这是代码:
class ViewController: UIViewController {
@IBOutlet weak var timeField: UITextField!
var datePicker:UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func CallPicker(sender: UITextField) {
let datePickerView:UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.DateAndTime
datePickerView.minuteInterval = 15
datePickerView.minimumDate = NSDate()
datePicker = datePickerView
let toolBar = UIToolbar()
toolBar.sizeToFit()
let spaceButton = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil)
let doneButton = UIBarButtonItem(title: "Done", style: .Plain, target: self, action: "doneTapped")
toolBar.setItems([spaceButton, doneButton], animated: false)
toolBar.userInteractionEnabled = true
sender.inputView = datePickerView
sender.inputAccessoryView = toolBar
datePickerView.addTarget(self, action: Selector("datePickerValueChanged:"), forControlEvents: UIControlEvents.ValueChanged)
}
func doneTapped() {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
timeField.text = dateFormatter.stringFromDate(datePicker.date)
timeField.resignFirstResponder()
}
func datePickerValueChanged(sender: UIDatePicker) {
let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.timeStyle = .MediumStyle
timeField.text = dateFormatter.stringFromDate(sender.date)
}
}
场景:假设现在是 8:42。日期选择器将显示 8:30 作为第一个条目,但是当我点击完成按钮时,它只会给出当前时间,即 8:42。但是,如果我滚动旋转并返回第一个条目,它会很好地工作。
最佳答案
选择日期时尝试使用以下代码
let userDateFormate = NSDateFormatter()
userDateFormate.dateFormat = "MMMM dd, yyyy"
let dateString = userDateFormate.stringFromDate(date)
dateFormate.dateFormat = "MMMM dd, yyyy"
dateFormate.timeZone = NSTimeZone.init(forSecondsFromGMT: 0)
let dateValue = dateFormate.dateFromString(dateString)
关于ios swift datepicker完成按钮,错误的日期与间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515017/