Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIDatePicker时间在更改UIDatePicker时重置';s模式到UIDatePickerModeTime?_Iphone_Date_Datepicker_Uidatepicker_Uidatepickermodetime - Fatal编程技术网

Iphone UIDatePicker时间在更改UIDatePicker时重置';s模式到UIDatePickerModeTime?

Iphone UIDatePicker时间在更改UIDatePicker时重置';s模式到UIDatePickerModeTime?,iphone,date,datepicker,uidatepicker,uidatepickermodetime,Iphone,Date,Datepicker,Uidatepicker,Uidatepickermodetime,我在iPhone应用程序中使用UIDatePicker。我保留了一个按钮,单击该按钮,日期选择器的模式在UIDatePickerModeTime和UIDatePickerModeDate之间切换。 当我在模式为UIDatePickerModeDate时更改日期选择器的日期时,更改的日期在我切换模式时正确显示,但如果我更改时间并切换模式,再次将模式切换到UIDatePickerModeTime会将时间重置为凌晨12:00。我不知道发生这种情况的原因以及如何处理。请帮助。我使用了一个日期对象,我声明

我在iPhone应用程序中使用UIDatePicker。我保留了一个按钮,单击该按钮,日期选择器的模式在UIDatePickerModeTime和UIDatePickerModeDate之间切换。
当我在模式为UIDatePickerModeDate时更改日期选择器的日期时,更改的日期在我切换模式时正确显示,但如果我更改时间并切换模式,再次将模式切换到UIDatePickerModeTime会将时间重置为凌晨12:00。我不知道发生这种情况的原因以及如何处理。请帮助。

我使用了一个日期对象,我声明该对象是一个属性,在其中,我在显示日期选择器时存储了日期选择器中的日期。 在日期选择器中更改日期时,我更新了存储的日期(使用UIControl通知) 在更改日期选择器的模式时,我为日期选择器指定了相同的日期


我知道这相当简单,但以前我也尝试过同样的方法,只取一个简单的日期对象,但它不起作用。让它成为一个属性为我做了这项工作

我也有类似的问题。第一次从UIDatePickerModeDate更改为UIDatePickerModeTime时,时间还行。但是,当我切换回..日期模式,然后再次切换到..时间模式时,时间读数为00:00。此后,无论模式更改的次数如何,时间始终保持在00:00。我以编程方式为UIDatePicker建模,与苹果UICatalog应用程序中的UIDatePicker相同。他们的应用程序中不存在此行为

在您的带领下,我将NSDate值从选取器保存在保留的@属性中,目的是在收到UIControl通知时检索并重置选取器。但是,我找不到当选择器从日期模式更改为时间模式时触发的事件。我甚至试过这样的方法:

        [myDatePicker addTarget:self action:@selector(getDateTime:) forControlEvents:UIControlEventAllEvents];
当然,如果我更改了选择器的日期(或时间),则会触发事件,但正如我提到的,不是在我更改模式时触发的

我最终使用了一个UISegmentedControl(与UICatalog应用程序中的相同),该控件的目标是上面切换模式的相同事件方法。但是,当我将选择器重置为保存的NSDate值时,时间保持在00:00。然后,我使用NSLog验证保存的值是否正常,并发现其时间值部分也更改为00:00!这确实很奇怪,因为我没有保存新的NSDate值。原来保存的值只是自己改变了

我仍在研究这个问题,很接近于将其称为bug,尤其是在没有支持NIB的情况下以编程方式添加UIDatePicker时

更新: 我的最终解决方案与你的几乎相同。由于某些原因,当保存的日期存储为NSDate值时,错误仍在继续。将其存储为NSString并通过两种方式进行类型转换:

self.saveDate = (NSString*)self.myDatePicker.date;

...

[self.myDatePicker setDate:(NSDate*)self.saveDate animated:NO];
此外,由于我正在通过GCD dispatch_async块检索日期并将其保存到外部设备,因此属性self。还需要符号(即使在主屏幕上)

最后结论:

我现在确信,每次访问选择器时都设置UIDatePicker日期是一项必要的要求,而不是一个bug。使用苹果的UICatalog应用程序,当你只将日期设置为今天一次,然后在日期和时间模式之间切换时,他们的应用程序表现出完全相同的行为。保留日期,但时间重置为00:00。如果切换到日期或时间以外的模式并切换回,则所有模式都将重置为其楼层值