2016-03-28 19 views
0

Randevunun tarihini ve saatini belirleyen bir uygulamam var. Bunun için iki tane NSDatePickerView var. Birincisi NSDatePickerModeDate'a, diğeri ise NSDatePickerModeTime'a ayarlıyorum. Ancak aslında NSMutableDictionary girişindeki aynı NSDate nesnesine başvurmaları gerekir. Ben NSDatePickerModeDateTime hakkında biliyorum, ama ayrı olarak seçilecek tarih ve zamana ihtiyacım var.Tarih ve Saat ile Xcode üzerinde NSDatePickerView kullanarak ayrı ayrı çalışma

Ben olay kontrol ve böyle göstermek ve gizlemek ve NSDatePickerView nasıl ayarlanacağı biliyorum ama UIControlEventValueChanged yangın NSDatePickerView için olay kontrolünde, bunun için bir değişiklik kod nasıl karıştı ve ayrıca nasıl başlatılması toplayıcı (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"]; //???? 
} 

Ben //???? ile gösterilir kodu nasıl bilmiyorum parçası. Ben NSDateFormatter, NSCalendar ve bazı cevaplarda bir tür tarih bileşenleri okudum, ama aslında aynı zamanda karışıklık ve striller içine karıştırır, ne ve ne yapmak için ne kullanmak için kullanır gibi beni daha da karışık hale getiriyordu. Lütfen yardım et.

+0

NSDatePickerView' ve 'UIDatePickerView' nedir? – Willeke

+0

@Willeke özür dilerim, sadece 'UIDatePickerView' anlamına gelir. –

cevap

1

Her iki tarih toplayıcı ayarlayabilirsiniz sadece zaman biçimine Tarihi dönüştürmek aynı tarih ve saate Kullanılmayan kısım var ama görüntülenmiyor ve değiştirilemiyor. Kullanıcı bir tarih seçicinin değerini değiştirdiğinde, diğer tarih seçiciyi aynı değere ayarlamanız gerekir.

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

Oh Görüyorum! Bu benim dillemamı temizler. Teşekkürler! –

1

u bu

/// sadece bugüne kadar tam tarihini dönüştürme deneyebilirsiniz

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

Başlangıçta kullandığım çözüm budur. Fakat diğer çözüm biraz daha uygulanabilir. Ama cevap için teşekkürler. –