2016-03-28 6 views
0

予定の日時を設定するアプリがあります。このために私は2つ持っていますNSDatePickerView。最初のものはNSDatePickerModeDateに設定され、もう1つはNSDatePickerModeTimeに設定されています。しかし、実際にはNSMutableDictionaryエントリ内の同じNSDateオブジェクトを参照する必要があります。私はNSDatePickerModeDateTimeについて知っていますが、私は日付と時刻を別々に選ぶ必要があります。XcodeでNSDatePickerViewを使用して別々に日付と時刻を操作する

私が表示し、非表示にするNSDatePickerViewを設定し、イベント制御と、このような方法を知っているが、NSDatePickerViewのためのイベント制御UIControlEventValueChanged火災で、私はこのための変更をコーディングする方法について混乱している、とも初期化する方法ピッカー(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"]; //???? 
} 

私はそれが//????で示されるコーディングするのか分からない部分。私はNSDateFormatterNSCalendarについて読んだことがありますが、いくつかの回答には日付の種類がありますが、それは実際には文字列と構造体が混じり合っているため、いつ、何を何時に行うのかを混乱させてしまいます。助けてください。

+0

「NSDatePickerView」と「UIDatePickerView」とは何ですか? – Willeke

+0

@Willeke申し訳ありませんが、私は 'UIDatePickerView'を意味します。 –

答えて

1

あなたは、両方の日付ピッカーを設定することができる唯一の時間形式に日付を変換します同じ日時に未使用部分はありますが、表示されず変更できません。ユーザーが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

ああ私は見る!さて、これは私のディレマをクリアします。ありがとう! –

1

uが、これは

///だけの日付に完全な日付を変換しようとすることができ

- (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

これは私が最初に使用する解決策です。しかし、もう1つの解決策はいくらか適用可能です。しかし、答えに感謝します。 –