私のコード自体で説明しましょう。これは私のアプリのために作ったアラーム画面です。この画面では、タイムピッカーを入力フィールドに設定するためのコードの一部があります。あなたの場合、その細胞になること。
これはあなたのやり方です。以下のビューロード機能を確認してください: 以下のコードはフィールド名に変更する必要があり、日付フォーマッタは表示するスタイルを書式設定することです。
私はこれに関する助けが必要かどうかお知らせください。
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) ?? ""
}
}
同じ意味で、同じセルに何かを追加したいのですか?もし私があなたの質問から理解したところからは、セルがデータを持っているかどうかをチェックする条件文を使用して、セルにdatepickerを追加しないでください。意味することセル内にデータが存在する場合{datepickerを呼び出さずにセルを編集可能}これは私があなたの質問から理解していることから伺いつつあるものです。私が助けてくれるかもしれないことを明確にする –
はい、まさに正しいです。ユーザーがdatepickerの完了ボタンをクリックしたときに選択された現在の日付にcell.valueTextField.textの値を変更したいと思います。 – Anthony
私はあなたにコードを提供するのを待つことを意味した –