从UIDatePicker获取日期,并将值作为输入文本传递给UITextField

时间:2019-04-24 23:32:22

标签: swift uitableview datepicker uitextfield

我知道这是一个非常简单的问题,我在SO上也看到了其他类似的问题,但是其中任何一个都回答了如何将数据传递到UITextfield内的CustomCell的问题。我有一个finalRegisterViewController,用户将在其中提供一些个人信息,例如个人出生日期。我将其设置如下:在RegisterViewController中,我嵌入了一个只有一个CustomViewCell(出生日期)的tableView,自定义单元格设计为只有一个UILabel,并且UITextField。当用户选择单元格时,该操作将触发UIDatePicker,该操作正常,除非选择了任何日期,否则我希望将此给定的日期显示在{{1 }},然后按下UIText上的完成按钮,CustomViewCell被关闭(也可以正常工作)。无论UIToolBar为何,UIDatePicker都是空白。

这是我到目前为止尝试过的。我已经创建了一个selectedDate(自定义单元格)对象,因此当选择日期时,我可以点击UITextField变量,并将text属性设置为用户选择的日期。我已经设置了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
    }

}

0 个答案:

没有答案