【发布时间】:2021-05-15 12:23:53
【问题描述】:
我有一个日期选择器。我想将显示的日期更改为使用手势控制之前或之后的日期。即,当一个人向左滑动时,日期会晚一天,如果一个人向右滑动,日期会晚一天。我不确定如何实现这一点,因为我尝试了以下方法,但我收到一条错误消息,指出“无法转换类型为 'UITextField?”的值?到预期的参数类型“日期”。如果有人可以帮助我或指出我正确的方向,我将不胜感激!谢谢
视图控制器:
@IBOutlet weak var userDate: UITextField!
private var datePicker: UIDatePicker?
override func viewDidLoad() {
super.viewDidLoad()
datePicker = UIDatePicker()
datePicker?.datePickerMode = .date
datePicker?.addTarget(self, action: #selector(Test.dateChanged(datePicker:)), for: .valueChanged)
userDate.inputView = datePicker
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEEE, MMM d, yyyy"
let todayDate = dateFormatter.string(from: Date.init())
self.userDate.text = todayDate
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(self.handleGesture(gesture:)))
swipeLeft.direction = .left
self.view.addGestureRecognizer(swipeLeft)
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(self.handleGesture(gesture:)))
swipeRight.direction = .right
self.view.addGestureRecognizer(swipeRight)
}
@objc func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
if gesture.direction == UISwipeGestureRecognizer.Direction.right {
print("Swipe Right")
view.backgroundColor = .black
// WHERE I WOULD LIKE TO CHANGE THE DATE ONE DAY AFTER
}
else if gesture.direction == UISwipeGestureRecognizer.Direction.left {
print("Swipe Left")
view.backgroundColor = .yellow
// WHERE I WOULD LIKE TO CHANGE THE DATE ONE DAY BEFORE
}
}
我尝试了这种方法,但这是我得到错误的地方:
Calendar.current.date(byAdding: .day, value: 1, to: userDate)!
【问题讨论】:
标签: swift nsdate uidatepicker uiswipegesturerecognizer