日期选择器和手势控制问题-Swift
我现在有一个日期选择器。基本上,我想做的是,如果你向左滑动,日期可以追溯到前一天(1月2日至1月1日),或者向右滑动,日期可以追溯到前一天(1月2日至1月3日)。我已经成功地实现了一种使用当前日期执行此操作的方法,但问题是它在获取当前日期数据时停止。基本上,这不会让我连续几天来回,因为它需要当前日期。我想让它不停地来回一天。如何改进代码?先谢谢你 视图控制器:日期选择器和手势控制问题-Swift,swift,datepicker,nsdate,Swift,Datepicker,Nsdate,我现在有一个日期选择器。基本上,我想做的是,如果你向左滑动,日期可以追溯到前一天(1月2日至1月1日),或者向右滑动,日期可以追溯到前一天(1月2日至1月3日)。我已经成功地实现了一种使用当前日期执行此操作的方法,但问题是它在获取当前日期数据时停止。基本上,这不会让我连续几天来回,因为它需要当前日期。我想让它不停地来回一天。如何改进代码?先谢谢你 视图控制器: @IBOutlet weak var userDate: UITextField! private var datePicke
@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
Calendar.current.date(byAdding: .day, value: -1, to: datePicker.date)! // WHAT NEEDS TO BE CHANGED IN ORDER FOR IT TO CONTINUOSLY ALLOW GOING BACK THE DATES
}
else if gesture.direction == UISwipeGestureRecognizer.Direction.left {
print("Swipe Left")
view.backgroundColor = .yellow
Calendar.current.date(byAdding: .day, value: 1, to: datePicker.date)! // WHAT NEEDS TO BE CHANGED IN ORDER FOR IT TO CONTINUOSLY ALLOW GOING FORWARD THE DATES
}
}
代码的问题是,当您在userDate.text字段中输入一个值时,您会传递该时刻的日期和时间,而您永远不会更新它。您的代码需要更改如下
private var daysDifference = 0 // The days difference from the now date. Negative numbers go for previous dates and positives for future dates.
override func viewDidLoad() {
// As is
}
@objc func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
if gesture.direction == UISwipeGestureRecognizer.Direction.right {
print("Swipe Right")
view.backgroundColor = .black
self.daysDifference = self.daysDifference - 1 // Update daysDifference for one day before
} else if gesture.direction == UISwipeGestureRecognizer.Direction.left {
print("Swipe Left")
view.backgroundColor = .yellow
self.daysDifference = self.daysDifference + 1 // Update daysDifference for one day after
}
self.userDate.text = Calendar.current.date(byAdding: .day, value: self.daysDifference, to: datePicker.date)!
}