我有一個UIDatepicker讓我讓用戶選擇時間。 UITableview
是在UIView
點擊一個UIButton
一個UIDdatePicker
出現時,當用戶選擇一個時間,然後按回退按鈕關閉UIDdatePicker
視圖,如果他想檢查他在UIDdatePicker
選擇什麼時間。 UIDdatePicker
不顯示用戶選擇的時間,它顯示datepicker的當前時間或時間開始時間。 我想要顯示用戶在他再次打開日期選擇器時所選擇的時間。 這是我當用戶按下UIButton
顯示UIDdatePicker
視圖代碼如何使UIDatePicker顯示用戶選擇的時間
-(IBAction)settingsButtonChanged:(UIButton *)sender
{
userTimePicker = [[UIDatePicker alloc]init];
[userTimePicker addTarget: self
action: @selector(userTimePickerValueChanged:)forControlEvents: UIControlEventValueChanged];
}
這是我的代碼,它可以讓日期選擇定製時間限制
-(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;
}
我不應該做reloadInputViews權和的setDate:不應該我通過DATE1因爲它的時間選擇我的用戶和當datepicker再次打開時,它顯示用戶選擇的時間 – raptor 2013-05-05 02:42:05
@raptor我無法完全理解你的代碼,你應該使用你存儲在userDefaults中的日期,但是你想創建一個最大日期和最小日期。這就是爲什麼我保留其他代碼的原因。是的reloadInputViews是不需要的。 – Anupdas 2013-05-05 03:38:55
@raptor如果你想創建一個最小值和最大值,而不是修改整個日期,你可以創建另一個日期,通過添加timeInterval來獲取morningTime和afternoonTime的maxDate。 – Anupdas 2013-05-05 03:42:59