我试图找出一种方法,允许用户更改表示为标签的当前日期。
更改/操作按钮是步进器
标签默认为当前日期,当他们点击步进器时,他们应该能够将日期更改为明天,第二天等等......当他们点击步进器上的+时。然后相反的点击 - 步进。
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)"
}
}
有人可以指出我正确的方向来解决这个问题。
谢谢, 艾迪生
答案 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)
}
}