Я знаю, что это очень простой вопрос, я видел другие подобные вопросы о SO, но любой из них отвечает на вопрос, как передать данные в UITextfield
внутри CustomCell
. У меня есть finalRegisterViewController
, где пользователь собирается предоставить некоторую личную информацию, такую как личная дата рождения. Я установил это следующим образом: Внутри RegisterViewController
я встроил tableView только с одной CustomViewCell
(Дата рождения), пользовательская ячейка имеет только UILabel
и UITextField
. Когда пользователь выбирает ячейку, действие вызывает UIDatePicker
, который работает нормально, за исключением случаев, когда выбрана какая-либо дата. Я ожидаю, что данная дата будет отображаться в поле UIText
CustomViewCell
, и когда Нажатие кнопки «Готово» на UIToolBar
приводит к отклонению UIDatePicker
(что тоже работает нормально). Независимо от selectedDate
UITextField
пусто.
Это то, что я пробовал до сих пор. Я создал объект DateViewCell
(пользовательская ячейка), поэтому, когда дата выбрана, я могу нажать на переменную UITextField
и установить для свойства текста дату, выбранную пользователем. Я установил dateValueChange
, чтобы я мог отправить новую выбранную дату в качестве ввода для UITextField
, но я не знаю, что мне не хватает, потому что не работает.
Итак, вот блок кода finalRegisterViewController
с инициализацией datePicker
.
import UIKit
class FinalRegisterViewController: UIViewController {
private let dateBirthArray = ["Fecha de Nacimiento"]
@IBOutlet weak var finalRegisterTableView: UITableView!
let birthDateCell = DateViewCell()
private let birthDateToolBar : UIToolbar = {
let dateToolBar = UIToolbar()
return dateToolBar
}()
private let birthDatePicker : UIDatePicker = {
let datePicker = UIDatePicker()
datePicker.addTarget(self, action: #selector (.dateValueChange(birthDatePicker : )), for: .valueChanged)
return datePicker
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(birthDatePicker)
view.addSubview(birthDateToolBar)
birthDateCell.dateTextField?.inputView = birthDatePicker
birthDateCell.dateTextField?.inputAccessoryView = birthDateToolBar
birthDatePicker.isHidden = true
birthDateToolBar.isHidden = true
setUpBirthDatePicker()
setUpDateToolBar()
setUpButtonToolBar()
}
private func setUpBirthDatePicker(){
birthDatePicker.datePickerMode = .date
birthDatePicker.backgroundColor = .white
birthDatePicker.translatesAutoresizingMaskIntoConstraints = false
birthDatePicker.heightAnchor.constraint(equalToConstant: 156).isActive = true
birthDatePicker.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 0).isActive = true
birthDatePicker.trailingAnchor.constraint(equalTo: self.view.trailingAnchor, constant: 0).isActive = true
birthDatePicker.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: 0).isActive = true
}
@objc private func dateValueChange(birthDatePicker : UIDatePicker){
let textDateFormatter = DateFormatter()
textDateFormatter.dateFormat = "dd/MM/yyyy"
birthDateCell.dateTextField?.text = textDateFormatter.string(from: birthDatePicker.date)
birthDateCell.dateTextField?.inputView = birthDatePicker
}
@objc func doneDateButtonPressed(sender : UIBarButtonItem){
birthDatePicker.isHidden = true
birthDateToolBar.isHidden = true
}
}
А вот как настроить пользовательскую ячейку dateViewCell
:
import UIKit
class DateViewCell: UITableViewCell {
@IBOutlet weak var dateLabel: UILabel!
@IBOutlet weak var dateTextField: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
}