Захватите дату из UIDatePicker и передайте значение в качестве входного текста на UITextField - PullRequest
0 голосов
/ 25 апреля 2019

Я знаю, что это очень простой вопрос, я видел другие подобные вопросы о 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
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...