嗨,有没有可能有一个表示空对象的NSDatePicker?类似于-/-/-或任何其他方式。
谢谢你,拉度
发布于 2011-04-17 00:43:14
简短的回答是:不
NSDatePicker简单地忽略无效的日期和nil。
例如,这不会更新NSDatePicker,而是保留旧值:
[datePicker setDateValue:nil];
唯一的解决方案:检测nil并做一些具体的事情:
if(date == nil) {
// Set Specific Date
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *nilDate = [dateFormat dateFromString:@"20000101"];
[datePicker setDateValue:nilDate];
// Or Disable
[datePicker setEnabled:FALSE];
} else {
// Update Date
[datePicker setDateValue:date];
}
发布于 2014-05-19 11:44:52
下面的NSDatePicker子类可以显示空的日期状态,并表示nil绑定。
https://github.com/ThesaurusSoftware/TFDatePicker
运行TFDatePickerTest以查看其行为。
发布于 2016-11-08 15:53:33
您可以通过将NSDatePickerElementFlags设置为0来强制NSDatePicker不显示日期:
@IBOutlet weak var datePicker: NSDatePicker!
datePicker.datePickerElements = NSDatePickerElementFlags(rawValue: 0)
但是,您必须处理在选择datePicker时显示日期的问题。下面是一个执行此操作的子类,当选择一个空的datePicker时显示当前日期:
class MyDatePicker: NSDatePicker {
var date: Date? {
didSet {
if let date = date {
self.dateValue = date
self.datePickerElements = .yearMonthDayDatePickerElementFlag
} else {
self.datePickerElements = NSDatePickerElementFlags(rawValue: 0)
}
}
}
override func becomeFirstResponder() -> Bool {
if date == nil {
date = Date()
}
return true
}
override func resignFirstResponder() -> Bool {
editing = false
date = self.dateValue
return super.resignFirstResponder()
}
}
https://stackoverflow.com/questions/5487479
复制相似问题