简体   繁体   English

如何将一个 DatePicker 添加到 swift 中的三个文本字段

[英]How to add one DatePicker to three textfields in swift

I need to add DatePicker to three textfields for that为此,我需要将 DatePicker 添加到三个文本字段中

I have created one datepicker like below我创建了一个如下所示的日期选择器

func addInputViewDatePicker(target: Any, selector: Selector) {

let screenWidth = UIScreen.main.bounds.width

//Add DatePicker as inputView
let datePicker = UIDatePicker(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 216))
datePicker.datePickerMode = .date
self.inputView = datePicker

//Add Tool Bar as input AccessoryView
let toolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 44))
let flexibleSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelBarButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelPressed))
let doneBarButton = UIBarButtonItem(title: "Done", style: .plain, target: target, action: selector)
toolBar.setItems([cancelBarButton, flexibleSpace, doneBarButton], animated: false)

self.inputAccessoryView = toolBar
}

@objc func cancelPressed() {
 self.resignFirstResponder()
}

and i am adding datepicker to three textfields in doneButtonPressed like below我正在将 datepicker 添加到doneButtonPressed的三个文本字段中,如下所示

    @objc func doneButtonPressed() {
    
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"   
 
    if let  datePicker = self.fromDateTextfield.inputView as? UIDatePicker {
    
        self.fromDateTextfield.text = dateFormatter.string(from: datePicker.date)

    }
    if let  datePicker = self.toDateTextfield.inputView as? UIDatePicker {
      
        self.toDateTextfield.text = dateFormatter.string(from: datePicker.date)
    }
    if let  datePicker = self.lastbidDateTextfield.inputView as? UIDatePicker {
       
        self.lastbidDateTextfield.text = dateFormatter.string(from: datePicker.date)
    }
    
    self.lastbidDateTextfield.resignFirstResponder()
    self.toDateTextfield.resignFirstResponder()
    self.fromDateTextfield.resignFirstResponder()
 }

and in viewdidload:在 viewdidload 中:

override func viewDidLoad() {
    super.viewDidLoad()        
    fromDateTextfield.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed))
    toDateTextfield.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed))
    lastbidDateTextfield.addInputViewDatePicker(target: self, selector: #selector(doneButtonPressed))

 }

with above code if i add date in fromDateTextfield then in all three textfields same date is adding.. without going to that remaining two textfields使用上面的代码,如果我在fromDateTextfield中添加日期,那么在所有三个文本字段中添加相同的日期.. 无需转到剩余的两个文本字段

i want to add different dates to three textfields.. how to do that with above code..我想向三个文本字段添加不同的日期..如何使用上面的代码来做到这一点..

if my above code is wrong please help me with new correct working code for three three textfields如果我上面的代码是错误的,请帮助我为三个三个文本字段提供新的正确工作代码

Set a tag to every UIBarButtonItem from 0 to 2为从 0 到 2 的每个UIBarButtonItem设置一个标签

func addInputViewDatePicker(target: Any, selector: Selector,tag:Int)
  .....
  doneBarButton.tag = tag
} 
@objc func doneButtonPressed(_ sender: UIBarButtonItem) {
  let dateFormatter = DateFormatter()
  dateFormatter.dateFormat = "yyyy-MM-dd"   
  let arr = [fromDateTextfield,toDateTextfield,lastbidDateTextfield]
  let current = arr[sender.tag]
  if let datePicker = current.inputView as? UIDatePicker {
    current.text = dateFormatter.string(from: datePicker.date)
    current.resignFirstResponder()
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM