当 UIDatePicker 的日期更改时使用 didSet 设置 NSDate 变量
Using didSet to set a NSDate variable when UIDatePicker's date is changed
我正在尝试使用 didSet 属性 观察器来更改(NSDate 变量)dueDate 的 NSDate,只要在我的 iOS Swift 应用程序中更改 UIDatePicker 的日期。要查看 dueDate 是否相应更改,我希望它在控制台上显示 dueDate。但是,我的代码根本没有做任何事情:
var dueDate = NSDate() {
didSet {
dueDate = datePicker.date
print("\(dueDate)")
}
}
我做错了什么?
这是因为您似乎没有观察到 UIDatePicker
值的变化。你应该:
1-将您的 UIViewController
添加为 UIDatePicker
上 ValueChanged
活动的目标:
datePicker.addTarget(self, action: #selector(ViewController.datePickerValueChanged), forControlEvents: .ValueChanged)
2-当事件被触发时,你必须将值转发给dueDate
:
func datePickerValueChanged() {
self.dueDate = datePicker.date
}
这是一个完整的示例:
class ViewController: UIViewController {
@IBOutlet weak var datePicker: UIDatePicker!
var dueDate = NSDate() {
didSet {
print("New due date value: \(dueDate)")
}
}
override func viewDidLoad() {
super.viewDidLoad()
datePicker.addTarget(self, action: #selector(ViewController.datePickerValueChanged), forControlEvents: .ValueChanged)
}
func datePickerValueChanged() {
self.dueDate = datePicker.date
}
}
我正在尝试使用 didSet 属性 观察器来更改(NSDate 变量)dueDate 的 NSDate,只要在我的 iOS Swift 应用程序中更改 UIDatePicker 的日期。要查看 dueDate 是否相应更改,我希望它在控制台上显示 dueDate。但是,我的代码根本没有做任何事情:
var dueDate = NSDate() {
didSet {
dueDate = datePicker.date
print("\(dueDate)")
}
}
我做错了什么?
这是因为您似乎没有观察到 UIDatePicker
值的变化。你应该:
1-将您的 UIViewController
添加为 UIDatePicker
上 ValueChanged
活动的目标:
datePicker.addTarget(self, action: #selector(ViewController.datePickerValueChanged), forControlEvents: .ValueChanged)
2-当事件被触发时,你必须将值转发给dueDate
:
func datePickerValueChanged() {
self.dueDate = datePicker.date
}
这是一个完整的示例:
class ViewController: UIViewController {
@IBOutlet weak var datePicker: UIDatePicker!
var dueDate = NSDate() {
didSet {
print("New due date value: \(dueDate)")
}
}
override func viewDidLoad() {
super.viewDidLoad()
datePicker.addTarget(self, action: #selector(ViewController.datePickerValueChanged), forControlEvents: .ValueChanged)
}
func datePickerValueChanged() {
self.dueDate = datePicker.date
}
}