我試圖用datepicker更新兩個按鈕。按鈕startDate和endDate。我不怎麼能用不同的日期選擇器更新這些按鈕。datepicker在兩個不同的更新值UIButton
也許與處理程序?
用戶故事:用戶點擊startDat datepicker顯示時,用戶選擇任何日期或時間,然後點擊endDate和相同的動作。
編輯:
class ViewController: UIViewController {
@IBOutlet weak var dateTextField: UITextField!
@IBOutlet weak var dateTextLabel: UILabel!
var whoTriggeredPickerView: UIButton?
@IBOutlet weak var startDateTextButton : UIButton!
@IBOutlet weak var endDateTextButton : UIButton!
@IBOutlet weak var datePick : UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func donePressed(_ sender: UIBarButtonItem) {
dateTextField.resignFirstResponder()
dateTextLabel.resignFirstResponder()
startDateTextButton.resignFirstResponder()
endDateTextButton.resignFirstResponder()
}
func donePressedButton(_ sender :UIButton){
startDateTextButton.resignFirstResponder()
endDateTextButton.resignFirstResponder()
}
func tappedToolBarBtn(_ sender: UIBarButtonItem) {
let dateformatter = DateFormatter()
startDateTextButton.setTitle(dateformatter.string(from: Date()), for: .normal)
endDateTextButton.setTitle(dateformatter.string(from: Date()), for: .normal)
startDateTextButton.resignFirstResponder()
endDateTextButton.resignFirstResponder()
}
func closeDatePicker(){
self.view.endEditing(true)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
closeDatePicker()
}
@IBAction func BtnClicked(sender: UIButton) {
let datePickerView: UIDatePicker = UIDatePicker()
datePickerView.datePickerMode = UIDatePickerMode.date
//sender.inputView = datePickerView
self.view.addSubview(datePickerView)
datePickerView.addTarget(self, action: #selector(ViewController.datePickerValueChanged), for: UIControlEvents.valueChanged)
self.whoTriggeredPickerView = sender
}
func datePickerValueChanged(_ sender: UIDatePicker) {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = DateFormatter.Style.medium
dateFormatter.timeStyle = DateFormatter.Style.none
//dateTextField.text = dateFormatter.string(from: sender.date)
if self.whoTriggeredPickerView == startDateTextButton {
// set startDateBtn title
startDateTextButton.setTitle(dateFormatter.string(from: Date()), for: .normal)
}else if self.whoTriggeredPickerView == endDateTextButton {
// set endDateBtn title
endDateTextButton.setTitle(dateFormatter.string(from: Date()), for: .normal)
}
}
}
第二個建議是不行的,日期選擇器更新所有的領域,我想目前的日期選擇器更新領域。我怎樣才能做到這一點與tmp變量? – kakame91
@ kakame91答案已更新,請注意您必須將您的'BtnClicked'參數類類型更改爲UIButton而不是AnyObject;不過,我建議你使用textfield而不是UIButton。 – johnny
不起作用我不能離開當前的日期選擇器,並且日期在默認日期:(在編輯的文章上方) – kakame91