每当我的 iOS Swift 应用程序中的 UIDatePicker 的日期发生更改时,我正在尝试使用 didSet 属性观察器来更改(NSDate 变量)dueDate 的 NSDate。要查看 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
}
}
关于ios - 当 UIDatePicker 的日期更改时使用 didSet 设置 NSDate 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968680/