Ios 使用步进器更改日期-Swift
我试图找出一种方法,允许用户更改以标签表示的当前日期 更改/操作按钮是一个步进器 标签默认为当前日期,当他们单击步进器时,他们应该能够将日期更改为明天、第二天等…当他们单击步进器上的+时。然后单击步进器的相反位置Ios 使用步进器更改日期-Swift,ios,swift,Ios,Swift,我试图找出一种方法,允许用户更改以标签表示的当前日期 更改/操作按钮是一个步进器 标签默认为当前日期,当他们单击步进器时,他们应该能够将日期更改为明天、第二天等…当他们单击步进器上的+时。然后单击步进器的相反位置 class DateTestViewController: UIViewController { @IBOutlet weak var stepperOutlet: UIStepper! @IBOutlet weak var dateLabel: UILabel! override
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)"
}
}
有人能告诉我解决这个问题的正确方向吗
谢谢,
Addison更新: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)
}
}
什么“问题”?您没有做任何关于更改标签的事情。而且您没有保留进入标签的日期,因此没有任何更改。此外,步进机不是一个很好的接口选择在这里。。。步进器就是要有一个值。但是你没有价值。你最好有自己的+和-按钮并对它们做出响应。好的,谢谢你的回复。我将研究为+和-。。。然后看看我是否能让它工作。很好,所以维护另一个
var
属性,它是标签的当前日期值,作为日期(NSDate)。因此,当点击+按钮时,执行日期算术(使用NSDateComponents)以将该日期增加一天,然后将其转换为字符串并将其放入标签中,就像您已经做的那样。按钮也是如此。谢谢你,莱昂纳多!添加到日期时,看起来工作正常。但是,如果您尝试转到以前的日期,则当前日期不起作用。示例:它不会在4月14日之前的任何日期生效。您可以将UIStepper最小值设置为-50(天)或任何您想要的值。为UIStepper创建了出口,然后添加:newStepper.minimumValue=-10谢谢!