【发布时间】:2020-04-18 06:26:57
【问题描述】:
我正在制作一个日志应用程序,用户可以在其中编辑日期时间标签。当用户点击标签时,它会弹出一个 UIDatePicker。我想这样当他们保存日期时,如果它是“今天”,那么标签不会更新以显示今天的日期,而是显示“今天”这个词。这是我在日历、日记、健身和任何其他允许用户编辑条目日志日期的应用程序中看到的。
当用户最初打开视图并看到当前日期和时间(程序化 UI)时,它会正确显示:
let dateTimePicker: UIDatePicker = {
let picker = UIDatePicker()
picker.datePickerMode = .dateAndTime
picker.timeZone = NSTimeZone.local
picker.backgroundColor = UIColor.white
return picker
}()
let dateTimeLabel: UILabel = {
let now = Date()
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
dateFormatter.setLocalizedDateFormatFromTemplate("h:mm")
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.attributedText = NSAttributedString(string: "Today, " + dateFormatter.string(from: now), attributes:[.underlineStyle: NSUnderlineStyle.single.rawValue])
return label
}()
日期选择器以弹出框形式打开。当用户单击“取消”时,日期和时间保持不变。当用户更改日期和/或时间并单击“保存”时,dateTimeLabel 会相应更新。但是,如果它显示“今天,___”并且用户单击“保存”,则标签会将其更新为当前日期。
这是我尝试过的:
@objc func saveTapped() {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US")
let now = Date()
if dateTimePicker.date == now {
dateFormatter.setLocalizedDateFormatFromTemplate("h:mm")
dateTimeLabel.text = "Today, " + dateFormatter.string(from: now)
} else {
dateFormatter.setLocalizedDateFormatFromTemplate("MMMd h:mm")
dateTimeLabel.text = dateFormatter.string(from: dateTimePicker.date)
}
removePopoverView()
}
显示它当前正在做什么的 Gif(我希望它在用户点击“保存”https://makeagif.com/i/v9mrKs987654325@ 时显示“今天”而不是“4 月 17 日”https://makeagif.com/i/v9mrKs
【问题讨论】:
标签: ios swift uidatepicker