UIDatePicker - 日期更改

Jos*_*ane 26 iphone objective-c uidatepicker

我刚开始在我的iPad应用程序中使用UIDatePicker,但有没有办法检查日期何时更改?

我希望在日期改变时做点什么.希望你能帮忙,谢谢.

Vla*_*mir 76

正确配置后,当用户完成其中一个轮子的旋转以更改日期或时间时,UIDatePicker对象会发送一条操作消息.关联的控件事件是UIControlEventValueChanged.

所以你需要添加你的类来处理UIControlEventValueChanged你的选择器中的事件:

[picker addTarget:self action:@selector(dateChanged:) 
              forControlEvents:UIControlEventValueChanged];
...

- (void) dateChanged:(id)sender{
   // handle date changes
}
Run Code Online (Sandbox Code Playgroud)

  • @Chimp我不认为 :(id)sender 实际上是需要的,至少在 iOS 5 上不需要。也许检查你的声明是否与你的实现相匹配。 (2认同)

Joh*_*ato 14

Swift 4版本:

UIDatePicker设置:

    let datePicker = UIDatePicker()
    datePicker.datePickerMode = .date
    dateTextField.inputView = datePicker
    datePicker.addTarget(self, action: #selector(datePickerChanged(picker:)), for: .valueChanged)
Run Code Online (Sandbox Code Playgroud)

功能:

@objc func datePickerChanged(picker: UIDatePicker) {
    print(picker.date)
}
Run Code Online (Sandbox Code Playgroud)

如果你注意到,如果你打算使用#selector(),那么Swift 4 在函数中需要@objc


eth*_*eff 5

快速版本

override func viewDidLoad() {
    super.viewDidLoad()
    let picker = UIDatePicker(frame: CGRectMake(0, 0, 200, 200))
    picker.addTarget(self, action: #selector(datePickerChanged(picker:)), for: .valueChanged)
    view.addSubview(picker)
}

@objc func datePickerChanged(picker: UIDatePicker) {
    print(picker.date)
}
Run Code Online (Sandbox Code Playgroud)