使用Stepper更改日期 - Swift

时间:2015-04-15 02:58:15

标签: ios swift

我试图找出一种方法,允许用户更改表示为标签的当前日期。

更改/操作按钮是步进器

标签默认为当前日期,当他们点击步进器时,他们应该能够将日期更改为明天,第二天等等......当他们点击步进器上的+时。然后相反的点击 - 步进。

class DateTestViewController: UIViewController {

@IBOutlet weak var stepperOutlet: UIStepper!
@IBOutlet weak var dateLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    let now = NSDate()
    var daysToAdd: Double = 1
    var newDate = now.dateByAddingTimeInterval(60*60*24*daysToAdd)
    dateLabel.text = "\(newDate)"
}

@IBAction func stepperAction(sender: AnyObject) {
    var unitsValue = 
    dateLabel.text = "\(unitsValue)"

}

}

有人可以指出我正确的方向来解决这个问题。

谢谢, 艾迪生

1 个答案:

答案 0 :(得分:1)

更新: Xcode 7.3•Swift 2.2

您可以使用NSCalendar方法dateByAddingUnit从您的日期添加或减去UIStepper中的值,如下所示:

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var strDate: UILabel!
    var selectedDate:NSDate!
    override func viewDidLoad() {
        super.viewDidLoad()
        selectedDate = NSDate()   // sets the initial date
        strDate.text = selectedDate.formatted
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    @IBAction func stepAction(sender: UIStepper) {
        selectedDate = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!.dateByAddingUnit(.Day, value: Int(sender.value), toDate: NSDate(), options: [])!
        strDate.text =  selectedDate.formatted
    }
}
extension NSDate {
    var formatted: String {
        let df = NSDateFormatter()
        df.dateFormat = "MMMM dd, yyyy - EEEE"
        df.locale = NSLocale(localeIdentifier: "en_US_POSIX")
        return df.stringFromDate(self)
    }
}

enter image description here