ios - 当 UIDatePicker 的日期更改时使用 didSet 设置 NSDate 变量

标签 ios swift nsdate

每当我的 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/

相关文章:

ios - 在 Swift 中访问 userInfo 字典

ios - 为什么 admob 插页式广告不显示在 iOS 上?

swift - 在 Xcode Storyboard中制作可重用组件

ios - 使 UIAlertViewController Action 不可点击?

swift - NSDate:获取明天或昨天的值

ios - 不可编辑的数据库本地存储在 iOS 应用程序中

ios - UICollectionViewListCell 的自定义子类中的自调整大小在 iOS 14 中不起作用

ios - 如何获得两个具有多个小数位的 NSDates 之间的年份差异

ios - 禁用按钮

ios - 奇怪的将输出从 NSString 转换为 NSDate