当 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 添加为 UIDatePickerValueChanged 活动的目标:

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
    }
}