日期选择器和手势控制问题-Swift

日期选择器和手势控制问题-Swift,swift,datepicker,nsdate,Swift,Datepicker,Nsdate,我现在有一个日期选择器。基本上,我想做的是,如果你向左滑动,日期可以追溯到前一天(1月2日至1月1日),或者向右滑动,日期可以追溯到前一天(1月2日至1月3日)。我已经成功地实现了一种使用当前日期执行此操作的方法,但问题是它在获取当前日期数据时停止。基本上,这不会让我连续几天来回,因为它需要当前日期。我想让它不停地来回一天。如何改进代码?先谢谢你 视图控制器: @IBOutlet weak var userDate: UITextField! private var datePicke

我现在有一个日期选择器。基本上,我想做的是,如果你向左滑动,日期可以追溯到前一天(1月2日至1月1日),或者向右滑动,日期可以追溯到前一天(1月2日至1月3日)。我已经成功地实现了一种使用当前日期执行此操作的方法,但问题是它在获取当前日期数据时停止。基本上,这不会让我连续几天来回,因为它需要当前日期。我想让它不停地来回一天。如何改进代码?先谢谢你

视图控制器:

 @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)!
}