Обновление кода:
Удалите этот код из ViewDidLoad()
let datepicker = UIDatePicker()
datepicker.addTarget(self, action: #selector(testdateViewController.datePickerChanged), for: UIControl.Event.valueChanged)
и используйте его в ViewDidLoad()
picker.addTarget(self, action: #selector(testdateViewController.datePickerChanged), for: UIControl.Event.valueChanged)
Переместите некоторый код из метода buttonPressed
в datePickerChanged
.
datePickerChanged будет выглядеть так:
@IBAction func datePickerChanged(_ sender: Any) {
updateData(date: picker.date)
}
Если вы хотите отобразить текущую дату в метке, тогда вы можете использовать другой метод для установки значения для метки, подобного этому
func updateData(date: Date) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy MM dd hh:mm: a"
let strDate = dateFormatter.string(from: picker.date)
Label.text = strDate
}
И в методе ViewDidLoad () добавьте это
updateData(date: Date()) // This will show the current date value
В конечном итоге ViewDidLoad()
будет выглядеть как
override func viewDidLoad() {
super.viewDidLoad()
picker.date = Date() // You can set any date initially that you want. This will be a date object
picker.addTarget(self, action: #selector(testdateViewController.datePickerChanged), for: UIControl.Event.valueChanged)
updateData(date: Date())
}
А также удалите весь код изbuttonPressed
. Потому что во время начальной загрузки на этикетке будет отображаться текущее время.
Полный код будет выглядеть как
import UIKit
class testdateViewController: UIViewController {
@IBOutlet weak var Label: UILabel!
@IBOutlet weak var picker: UIDatePicker!
@IBAction func buttonPressed(_ sender: UIButton) {
}
override func viewDidLoad() {
super.viewDidLoad()
picker.date = Date() // You can set any date initially that you want. This will be a date object
picker.addTarget(self, action: #selector(testdateViewController.datePickerChanged), for: UIControl.Event.valueChanged)
updateData(date: Date())
}
@IBAction func datePickerChanged(_ sender: Any) {
updateData(date: picker.date)
}
func updateData(date: Date) {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy MM dd hh:mm: a"
let strDate = dateFormatter.string(from: picker.date)
Label.text = strDate
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}