ios - UIDatePicker valuechanged 不更新第一次旋转,但每次旋转后.. iOS

标签 ios datepicker

我在静态 TableViewCell 中嵌入了一个 UIDate 选择器,目前我禁用了大部分代码,除了负责日期选择器的代码。

我将日期选择器用作倒数计时器

所以这就是全部,除了一些常用的 outlets 和 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 不会被调用: First spin

从第二次旋转开始,事件被调用并且标签被更新: Second spin

尝试过:

执行: datePicker.setDate(NSDate(), animated: trueviewDidLoad() 解决了事件在第一次旋转时没有被调用的问题,但这会将日期选择器的初始状态设置为当前时间。因为我使用这个控件来设置一个事件的持续时间,所以我想让它从 0 小时 1 分钟开始。 这可以通过 datePicker.countDownDuration = 60 来完成,但在此之后,主要问题又回来了。 因此,一个解决方案可能是将 DatePicker 的 NSDate 设置为 1 分钟,但该怎么做呢?

解决方案:

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)

最佳答案

我提出了以下解决方案,将 datePicker 组件(在倒数计时器模式下)初始化为 0 小时 1 分钟,它在第一次旋转时直接响应。因为这似乎是一个错误,如果您希望文本标签在 datePicker 更改时更新其值并且一开始没有更新,这将非常令人沮丧:

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)

对于我的实现来说,timeZone 组件并不是真正需要的。

关于ios - UIDatePicker valuechanged 不更新第一次旋转,但每次旋转后.. iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28295013/

相关文章:

ios - 通过 ibtool 生成字符串时如何使 UILabel 内容不可本地化?

iphone - AVFoundation 缓冲区与已保存图像的比较

objective-c - RubyMotion 是否支持 objective-c 代码的集成?

iphone - ios fellow alloc 之间有什么不同?

javascript - AngularUI Datepicker 禁用超出范围的日期

javascript - AngularJS - 如何刷新指令范围

ios - iTunes Connect:如何创建Bundle ID作为其他团队的一部分?

ajax - 当日期选择器更改日期时如何使用ajax post?

node.js - 使用日期选择器限制天数

jquery - 在 PickMeUp 插件中突出显示日期数组