![](/img/trans.png)
[英]How can user make iOS 5.1 UIKit UIDatePicker component return time differing in AM/PM from the time selected
[英]How to make UIDatePicker to show user selected time
我有一个UIDatepicker,我让用户选择时间。 UITableview
是一个UIView
其中一个的点击UIButton
一个UIDdatePicker
出现,当用户选择一个时间,然后按后退按钮以关闭UIDdatePicker
看法,如果他要检查什么,他有时间选择在UIDdatePicker
。 UIDdatePicker
不显示用户选择的时间,它显示UIDdatePicker
的当前时间或时间开始时间。 我想显示用户再次打开datepicker时用户选择的时间。 这是我的用户按UIButton
以显示UIDdatePicker
视图的代码
-(IBAction)settingsButtonChanged:(UIButton *)sender
{
userTimePicker = [[UIDatePicker alloc]init];
[userTimePicker addTarget: self
action: @selector(userTimePickerValueChanged:)forControlEvents: UIControlEventValueChanged];
}
这是我的代码,它允许datepicker有自定义时间限制
-(IBAction)datepickerTimenButtonChanged:(UIButton *)control
{
if (control.tag == 1)
{
self.selectedButton = control.tag;
int startTime = 7;
int endTime = 11;
NSDate *date1 = [NSDate date];
components = [gregorian components: NSUIntegerMax fromDate: date1];
[components setHour:startTime];;
[components setMinute:00];
NSDate *startDate = [gregorian dateFromComponents:components];
[components setHour:endTime];
[components setMinute:00];
NSDate *endDate = [gregorian dateFromComponents:components];
morningButton.selected = YES;
afternoonButton.selected = NO;
eveningButton.selected = NO;
nightButton.selected = NO;
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:startDate];
[userTimePicker setMaximumDate:endDate];
[userTimePicker setDate:startDate animated:YES];
[userTimePicker reloadInputViews];
}
if (control.tag == 2)
{
self.selectedButton = control.tag;
morningButton.selected = NO;
afternoonButton.selected = YES;
eveningButton.selected = NO;
nightButton.selected = NO;
int startTime = 12;
int endTime = 15;
NSDate *date1 = [NSDate date];
components = [gregorian components: NSUIntegerMax fromDate: date1];
[components setHour:startTime];
[components setMinute:00];
NSDate *startDate = [gregorian dateFromComponents:components];
[components setHour:endTime];
[components setMinute:00];
NSDate *endDate = [gregorian dateFromComponents:components];
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:startDate];
[userTimePicker setMaximumDate:endDate];
[userTimePicker setDate:startDate animated:YES];
[userTimePicker reloadInputViews];
}
}
允许用户选择自己时间的代码
-(void) userTimePickerValueChanged:(UIButton *)sender
{
switch (self.selectedButton)
{
case 1:
{
NSUserDefaults *userSelectedMorningTime = [NSUserDefaults standardUserDefaults];
NSDate *selectedMorningTime = [userTimePicker date];
NSLog (@"SETTING: morningTimeKey");
storedMornTime = selectedMorningTime;
[userSelectedMorningTime setObject:selectedMorningTime forKey:@"morningTimeKey"];
[userSelectedMorningTime synchronize];
}
break;
case 2:
{
NSUserDefaults *userSelectedAfternoonTime = [NSUserDefaults standardUserDefaults];
NSDate *selectedAfternoonTime = [userTimePicker date];
NSLog (@"SETTING: afternoonTimeKey");
storedAfternoonTime = selectedAfternoonTime;
[userSelectedAfternoonTime setObject:selectedAfternoonTime forKey:@"afternoonTimeKey"];
[userSelectedAfternoonTime synchronize];
}
break;
}
从我从代码中可以NSUserDefaults
,您将所选时间保存到NSUserDefaults
,但是您永远不会使用从中获取的已保存时间。
我的猜测,如果你改变一切应该工作。
-(IBAction)datepickerTimenButtonChanged:(UIButton *)control
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (control.tag == 1)
{
self.selectedButton = control.tag;
int startTime = 7;
int endTime = 11;
//Saved Morning time date from user defaults
NSDate *date1 = [defaults objectForKey:@"morningTimeKey"];
if(!date1) date1 = [NSDate date];
components = [gregorian components: NSUIntegerMax fromDate: date1];
[components setHour:startTime];;
[components setMinute:00];
NSDate *startDate = [gregorian dateFromComponents:components];
[components setHour:endTime];
[components setMinute:00];
NSDate *endDate = [gregorian dateFromComponents:components];
morningButton.selected = YES;
afternoonButton.selected = NO;
eveningButton.selected = NO;
nightButton.selected = NO;
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:startDate];
[userTimePicker setMaximumDate:endDate];
[userTimePicker setDate:startDate animated:YES];
[userTimePicker reloadInputViews];
}
if (control.tag == 2)
{
self.selectedButton = control.tag;
morningButton.selected = NO;
afternoonButton.selected = YES;
eveningButton.selected = NO;
nightButton.selected = NO;
int startTime = 12;
int endTime = 15;
//Saved AfterNoon time date from user defaults
NSDate *date1 = [defaults objectForKey:@"afternoonTimeKey"];
if(!date1) date1 = [NSDate date];
components = [gregorian components: NSUIntegerMax fromDate: date1];
[components setHour:startTime];
[components setMinute:00];
NSDate *startDate = [gregorian dateFromComponents:components];
[components setHour:endTime];
[components setMinute:00];
NSDate *endDate = [gregorian dateFromComponents:components];
[userTimePicker setDatePickerMode:UIDatePickerModeTime];
[userTimePicker setMinimumDate:startDate];
[userTimePicker setMaximumDate:endDate];
[userTimePicker setDate:startDate animated:YES];
[userTimePicker reloadInputViews];
}
}
[datePicker setDate:date animated:YES];
通过当前日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
希望这会帮助你。
只需在变量中保存选定的日期。 在显示dataPicker时,只需设置该日期。
NSDate * date = [NSDate date]
[datePicker setDate:date animated:YES];
我遇到过同样的问题。 出于某种原因,仅为日期选择器设置最小日期,而不是时间选择器解决了我的问题:
if ([datePicker isDatePicker]) {
//DATE PICKER
datePicker.minimumDate = [NSDate date];
}else{
//TIME PICKER
//datePicker.minimumDate = [NSDate date];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.