程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将当前日期更改为一个之前/一个之后 - Swift DatePicker大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决将当前日期更改为一个之前/一个之后 - Swift DatePicker?

开发过程中遇到将当前日期更改为一个之前/一个之后 - Swift DatePicker的问题如何解决?下面主要结合日常开发的经验,给出你关于将当前日期更改为一个之前/一个之后 - Swift DatePicker的解决方法建议,希望对你解决将当前日期更改为一个之前/一个之后 - Swift DatePicker有所启发或帮助;

我有一个日期选择器。我想将显示的日期更改为使用手势控制之前或之后的日期。即,当一个人向左滑动时,日期会推迟一天,如果一个人向右滑动,则日期会推迟一天。我不知道如何实现这一点,因为我已经尝试了下面的方法,但我收到一条错误消息,指出“无法转换‘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)!

解决方法

函数 date(byAdding:value:to:options:) 期望将日期类型作为参数传递。您正在传递 UITextField 而不是日期类型。 我想你想做的是

Calendar.current.date(byAdding: .day,value: 1,to: datePicker.datE)!
,

您正在尝试设置一个文本字段,该方法在此处需要一个日期:

Calendar.current.date(byAdding: .day,to: userDatE)!

从您的问题来看,您似乎想从 textField 中显示的当前日期中添加或减去一天。尝试以下代码来做到这一点。这从 userDate.text 获取日期,并根据将 userDate.text 设置为新值的滑动方向添加或减去一天。

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var userDate: UITextField!
    private var datePicker: UIDatePicker?
    private let dateFormatter = DateFormatter()


    override func viewDidLoad() {
        super.viewDidLoad()

        datePicker = UIDatePicker()
        datePicker?.datePickerMode = .date
        // datePicker?.addTarget(self,action: #SELEctor(Test.dateChanged(datePicker:)),for: .valueChanged)

        userDate.inputView = datePicker
        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")
            // WHERE I WOULD LIKE TO CHANGE THE DATE ONE DAY AFTER
            let date = dateFormatter.date (from: userDate.text ?? dateFormatter.String(from: Date()))!
            let plusDay = Calendar.current.date(byAdding: .day,to: datE)!
            userDate.text = dateFormatter.String(from: plusDay)
        }
        else if gesture.direction == UISwipeGestureRecognizer.Direction.left {
            print("Swipe Left")
            // WHERE I WOULD LIKE TO CHANGE THE DATE ONE DAY BEFORE
            let date = dateFormatter.date (from: userDate.text ?? dateFormatter.String(from: Date()))!
            let minusDay = Calendar.current.date(byAdding: .day,value: -1,to: datE)!
            userDate.text = dateFormatter.String(from: minusDay)
        }
    }
}

大佬总结

以上是大佬教程为你收集整理的将当前日期更改为一个之前/一个之后 - Swift DatePicker全部内容,希望文章能够帮你解决将当前日期更改为一个之前/一个之后 - Swift DatePicker所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。