gpt4 book ai didi

ios - 两个不同的 UIButton 中的日期选择器更新值

转载 作者:行者123 更新时间:2023-11-28 15:44:19 25 4
gpt4 key购买 nike

我正在尝试使用日期选择器更新两个按钮。按钮开始日期和结束日期。我不知道如何使用不同的日期选择器更新这些按钮。

也许有处理程序?

用户故事:用户点击 startDat 日期选择器显示,用户选择任何日期或时间,然后点击 endDate 和相同的 Action 。

编辑:

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 变量来记录选择器是由哪个按钮触发的。然后您可以决定要设置哪个按钮的标题。

//In your view controller:
var whoTriggeredPickerView: UIButton?

//In your BtnClicked function:
self.whoTriggeredPickerView = sender

//Then in datePickerValueChanged function:
if self.whoTriggeredPickerView == StartDateButton {
// set startDateBtn title
}else if self.whoTriggerPickerView == endDateButton {
// set endDateBtn title
}

一些建议:

  1. 始终小写实例名称,您正在使用 DatePick 作为 UIDatePicker 的实例名称,相反,您应该将其命名为 datePicker;也用于函数名称。

  2. 对于您的情况,您可以使用两个文本字段而不是按钮。
    让 datePicker = UIDatePicker()
    datePicker.addTarget(self, action: #selector(dateChanged), for: .valueChanged)
    startDateTextField.inputView = datePicler
    endDateTextField.inputView = datePicker

关于ios - 两个不同的 UIButton 中的日期选择器更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com