2016-03-28 53 views
0

我有设置约会日期和时间的应用程序的一部分。为此,我有两个NSDatePickerView。第一个我设置为NSDatePickerModeDate,而另一个设置为NSDatePickerModeTime。但实际上他们应该指NSMutableDictionary条目中的同一个NSDate对象。我知道NSDatePickerModeDateTime,但我需要分别挑选日期和时间。在Xcode上分别使用NSDatePickerView处理日期和时间

我知道如何建立NSDatePickerView显示和隐藏和事件控制等,但在事件控制UIControlEventValueChangedNSDatePickerView,我对如何编写这种变化感到困惑,以及如何初始化采摘(datePicker.date = today, timePicker.date = "9:00 AM")

@interface MyViewController() { 
    NSMutableDictionary *data; 
} 

@end 

@implementation MyViewController 

@synthesize datePicker, timePicker; 

- (void) viewDidLoad { 
    [super viewDidLoad]; 
    data = [[NSMutableDictionary alloc] init]; 
    [data setObject:[NSDate date] forKey:@"date"]; 

    datePicker.datePickerMode = UIDatePickerModeDate; 
    timePicker.datePickerMode = UIDatePickerModeTime; 

    [datePicker addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged]; 
    [timePicker addTarget:self action:@selector(changeTime:) forControlEvents:UIControlEventValueChanged]; 

    datePicker.date = data[@"date"]; //???? 
    timePicker.date = data[@"date"]; //???? 
} 

- (IBAction) changeDate:(id)sender { 
    UIDatePickerView *dp = (UIDatePickerView *)sender; 
    [data setObject:dp.date forKey:@"date"]; //???? 
} 

- (IBAction) changeTime:(id)sender { 
    UIDatePickerView *tp = (UIDatePickerView *)sender; 
    [data setObject:tp.date forKey:@"date"]; //???? 
} 

,我不知道如何代码是由//????表示的一部分。我已阅读了关于NSDateFormatter,NSCalendar,以及某些答案上的某些日期组件,但这实际上使我更加困惑,因为它也会将字符串和结构引入组合中,以及什么时候使用什么来执行操作。请帮忙。

+0

什么是'NSDatePickerView'和'UIDatePickerView'? – Willeke

+0

@Willeke对不起,我的意思是只有'UIDatePickerView'。 –

回答

1

您可以同时设置日期选择器到相同的日期和时间。未使用的部分在那里,但不显示,也不能更改。当用户更改一个日期选择器的值时,您必须将其他日期选择器设置为相同的值。

- (IBAction)changeDate:(id)sender { 
    NSDatePicker *dp = (NSDatePicker *)sender; 
    [data setObject:dp.dateValue forKey:@"date"]; 
    self.timePicker.dateValue = dp.dateValue; 
} 

- (IBAction)changeTime:(id)sender { 
    NSDatePicker *tp = (NSDatePicker *)sender; 
    [data setObject:tp.dateValue forKey:@"date"]; 
    self.datePicker.dateValue = tp.dateValue; 
} 
+0

哦,我明白了!好吧,这清理了我的dillema。谢谢! –

1

ü可以试试这个

///将全日仅日期

- (IBAction) changeDate:(UIDatePickerView *)sender { 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM/dd/yyyy"]; 
NSString *dateStr = [dateFormatter stringFromDate:[sender date]]; 
[data setObject:dateStr forKey:@"date"]; 
} 

///转换日期只有时间格式

- (IBAction) changeTime:(UIDatePickerView *)sender { 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"hh:mm a"]; 
NSString *dateStr = [dateFormatter stringFromDate:[sender date]]; 
[data setObject:dateStr forKey:@"Time"]; 
} 
+0

这是我最初使用的解决方案。但另一种解决方案更适用。但谢谢你的答案。 –