こんにちはnilオブジェクトを表すNSDatePickerを持つことは可能ですか?-/-/-または他の方法のようなもの。
ありがとう、ラドゥ
こんにちはnilオブジェクトを表すNSDatePickerを持つことは可能ですか?-/-/-または他の方法のようなもの。
ありがとう、ラドゥ
簡単な答え:いいえ
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];
}
次のNSDatePickerサブクラスは、空の日付状態を表示でき、nilバインディングを表します。
https://github.com/ThesaurusSoftware/TFDatePicker
TFDatePickerTestを実行して、動作を確認します。
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()
}
}