【发布时间】:2015-04-02 10:02:54
【问题描述】:
我在静态 TableViewCell 中嵌入了一个 UIDate Picker,目前我禁用了大部分代码,但负责日期选择器的代码除外。
我将日期选择器用作倒数计时器
除了一些常见的 outlet 和 vars 之外,这就是全部:
override func viewDidLoad() {
super.viewDidLoad()
// tfName.delegate = self
// tfDescription.delegate = self
//
datePicker.countDownDuration = 60
// pickerValueChanged(self)
}
@IBAction func pickerValueChanged(sender: AnyObject) {
seconds = Int(datePicker.countDownDuration)
hours = seconds / 3600
if hours == 0{
minutes = seconds / 60
} else{
minutes = seconds % 3600 / 60
}
labelDuration.text = "\(hours) hours \(minutes) minutes"
}
我第一次更改 Picker 的值时,值更改函数根本不会触发,但它之后的旋转不会失败。
我尝试在viewDidLoad 中调用它,使用pickerValueChanged(self) 并且可以正常工作,但不能解决问题。我还注释掉了pickerValueChanged 函数和viewDidLoad 中的每一行代码,但它仍然没有触发第一次旋转..
感谢您的宝贵时间!
更新:添加图片
第一次旋转后,pickerValueChanged 不会被调用:
从第二次旋转开始,事件被调用并且标签被更新:
试过了:
执行:
datePicker.setDate(NSDate(), animated: true 在viewDidLoad()
解决了第一次旋转时没有调用事件的问题,但这会将日期选择器的初始状态设置为当前时间。由于我使用此控件来设置事件的持续时间,因此我想让它从 0 小时 1 分钟开始。
这可以通过datePicker.countDownDuration = 60 完成,但在此之后,主要问题又回来了。
因此,一个解决方案可能是将 DatePicker 设置为 1 分钟的 NSDate,但如何做到这一点?
解决方案:
var dateComp : NSDateComponents = NSDateComponents()
dateComp.hour = 0
dateComp.minute = 1
dateComp.timeZone = NSTimeZone.systemTimeZone()
var calendar : NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!
var date : NSDate = calendar.dateFromComponents(dateComp)!
datePicker.setDate(date, animated: true)
【问题讨论】:
标签: ios datepicker