好的,让我用我的代码本身来解释一下。这是我为我们的应用程序制作的提醒屏幕。所以在这个屏幕中,我有一部分代码用于将时间选择器设置为输入字段。在您的情况下,它将成为 Cell。
所以这就是你的做法。检查视图是否加载功能如下:
下面的代码必须更改为您的字段名称,日期格式化程序用于格式化您要显示的样式。
如果您需要任何帮助,请告诉我。
timeInput.layer.addSublayer(bottomLineTimePicker)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short
// This is the code you need //
timeInput.text = dateFormatter.string(from: timePicker.date)
这是完整的代码。
import UIKit
class Reminder: UIViewController {
@IBOutlet weak var timePickerStack: UIStackView!
@IBOutlet weak var timeInput: UITextField!
@IBOutlet weak var setReminderSwitch: UISwitch!
@IBOutlet weak var setReminderButton: UIButton!
let timePicker = UIDatePicker()
let bottomLineTimePicker = CALayer()
let dateFormatter = DateFormatter()
@IBAction func setReminder(_ sender: UIButton) {
let nextDate = NotificationManager.shared.schedule(time: self.timePicker.date, repeats: true)
if nextDate != nil {
print("\(nextDate!.timeIntervalSinceNow.formattedTime)")
}
setReminderStatus(reminderStatus: true,reminderTime:self.timePicker.date)
}
func createTimePicker(){
timePicker.datePickerMode = .time
let toolBar = UIToolbar()
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: nil, action: #selector(donePressed))
toolBar.setItems([doneButton], animated: true)
timeInput.inputAccessoryView = toolBar
timeInput.inputView = timePicker
}
func donePressed(){
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short
timeInput.text = dateFormatter.string(from: timePicker.date)
self.view.endEditing(true)
}
@IBAction func reminderSwitch(_ sender: UISwitch) {
if(sender.isOn == true){
timePickerStack.isHidden = false
}else{
NotificationManager.shared.cancelAllNotifications()
timePickerStack.isHidden = true
unsetReminder()
}
}
override func viewDidLoad() {
super.viewDidLoad()
if(issetReminder()){
setReminderSwitch.setOn(true, animated: true)
timePickerStack.isHidden = false
}else{
setReminderSwitch.setOn(false, animated: true)
timePickerStack.isHidden = true
}
createTimePicker()
bottomLineTimePicker.frame = CGRect(x: 0.0, y: timeInput.frame.height - 1, width: timeInput.frame.width, height: 1.0)
bottomLineTimePicker.backgroundColor = UIColor.init(red: 23/255.5, green: 155/255.5, blue: 167/255.5, alpha: 1.0).cgColor
timeInput.layer.addSublayer(bottomLineTimePicker)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateStyle = .none
dateFormatter.timeStyle = .short
// This is the code you need //
timeInput.text = dateFormatter.string(from: timePicker.date)
setReminderButton.layer.cornerRadius = 20.0
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func backButtonPressed(_ sender: UIButton) {
let backButtonPressed = self.storyboard?.instantiateViewController(withIdentifier: "navController") as! IndexNavController
self.present(backButtonPressed, animated: true, completion: nil)
}
}
extension TimeInterval{
var formattedTime:String{
let formatter = DateComponentsFormatter()
formatter.unitsStyle = .brief
formatter.includesApproximationPhrase = false
formatter.includesTimeRemainingPhrase = false
formatter.allowedUnits = [.hour, .minute, .second]
formatter.calendar = Calendar.current
return formatter.string(from: self) ?? ""
}
}