swift中的DatePicker问题

时间:2015-12-21 18:06:15

标签: ios iphone swift uidatepicker

我是Swift的新手。在我的应用程序中,我有一个日期选择器概念。我的问题是当选择日期按钮,日期选择器出现正常时,我选择DEC 20 2015。我的问题是当滚动日期选择器轮非常快并且我的日期选择器工具栏上的按完成按钮日期不是选择。如果我打开日期选择器,我想显示之前选择的日期示例DEC 20 2015。但是当我滚动得更快时,它会显示其他一些日期。

var datePicker:UIdatePicker
func dateselcted()
{
    var date:NSDate = NSDate()
    datePicker.minimumdate = date
    if cell.dateText.characters.count == 0
    {
        //If user not select any date I am showing current date  and working fine
        var dateOb:AnyObject = 
        datePicker.setdate(date ,animated:false)
    }
    else
    {
        // Suppose user select DEC 20 2015 storing this date in one object example below and working fine but it is fails when scroll datepicker wheel very fast then it is showing the other date how to show "DEC 20 2015 " when picker wheel scrolls fastly I want to show date what I selected

        var dateOb:AnyObject = DEC 20 2015 
        datePicker.setdate( dateOb as nsdate ,animated:false)
    }    
}

4 个答案:

答案 0 :(得分:1)

日期选择器仅在车轮停止旋转时调用它的动作方法。当轮子从值旋转到值时,不会连续调用。

看起来没有任何设施可以做你想做的事情(在日期选择器旋转时获得轮值变化的通知。)

此外,我不认为日期选择器(或常规UIPickerView)的值会在停止旋转之前发生变化,因此如果您开始旋转并在停止之前单击按钮,它仍将具有旧值。 / p>

答案 1 :(得分:0)

在按完成按钮之前,您是否在等待滚动停止?这可能是你的问题。

This answer可能有你想要的东西。

代表

pickerView:didSelectRow:inComponent:
在拾取器停止旋转之前不会调用

。如果您需要在旋转时确定所选行,则需要编写一些逻辑来猜测按下完成后的状态。

答案 2 :(得分:0)

无法像您一样选择日期,仍然希望日期选择器自动选择所需的日期。该设备不知道我们的想法。通常,用户不会按下按钮,直到他们看到日期被选中。所以,我认为你的担忧是微不足道的。

答案 3 :(得分:0)

您可以先将datePicker.date设置为[NSDate date],然后将datePicker.date设置为先前选择的日期。您的OC代码:

datePicker.date = [NSDate date];
datePicker.date = date;

它对我有用,但我不知道为什么。