我知道这是一个非常简单的问题,我在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
}
}