i具有一个用dateformater绑定到日期的文本字段,dateformat属性设置为“ M / d”。当我在文本字段中输入类似3/1的字符串时,它将返回3/1/2000。我如何将其默认设置为当前年份,而不必在字符串中键入年份。
您可以使用当年的年初设置日期格式器的defaultDate:
创建您的自定义日期格式]
extension Formatter { static let monthDay: DateFormatter = { let dateFormatter = DateFormatter() dateFormatter.locale = .init(identifier: "en_US_POSIX") dateFormatter.dateFormat = "M/d" return dateFormatter }() }
然后为您的textField添加了一个用于控制事件编辑的目标:
textField.addTarget(self, action: #selector(editingChanged), for: .editingChanged)
[创建一个方法来检查textField值每次更改是否可以由您的日期格式化程序解析用户键入的文本。将当前年份的开始设置为dateFormatter的defaultDate:
@objc func editingChanged(_ textField: UITextField) {
let year = Calendar.current.component(.year, from: Date())
let defaultDate = DateComponents(calendar: .current, year: year).date!
Formatter.monthDay.defaultDate = defaultDate
if let date = Formatter.monthDay.date(from: textField.text!) {
print(date.description(with: .current))
}
}