2012-01-20 8 views
5

Używam DatePicker z wyskakującymi okienkami, gdy użytkownik kliknie pole tekstowe. Jednak Picker wyświetla najpierw Month, a nie date first i nie jest to brytyjski sposób zapisywania daty. Czy istnieje sposób na ustawienie formatu daty w DatePicker na sposób brytyjski, taki jak dd/mm/rrrr? Używam Achtionsheet:iPhone: DatePicker dd/mm/rrrr

-(IBAction)acsheet:(id)sender 
{ 

    actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
               delegate:nil 
            cancelButtonTitle:nil 
           destructiveButtonTitle:nil 
            otherButtonTitles:nil]; 
    [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; 

    //CGRect pickerFrame = CGRectMake(0, 45, 0, 0); 
    pickerView1 = [[UIDatePicker alloc] init]; 
    pickerView1.datePickerMode = UIDatePickerModeDate; 

    [actionSheet addSubview:pickerView1]; 

    UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]]; 
    closeButton.momentary = YES; 
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f); 
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar; 
    closeButton.tintColor = [UIColor blackColor]; 
    [closeButton addTarget:self action:@selector(dismissActionSheet:)      
         forControlEvents:UIControlEventValueChanged]; 
    [actionSheet addSubview:closeButton]; 
    [actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];  
    [actionSheet setBounds:CGRectMake(0, 0, 320, 485)]; 

    [pickerView1 addTarget:self 
        action:@selector(updateLabel:) 
      forControlEvents:UIControlEventValueChanged]; 

    UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissDatePicker:)] ; 
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height, 320, 44)]; 
    toolBar.tag = 11; 
    toolBar.barStyle = UIBarStyleBlackTranslucent; 

    [toolBar setItems:[NSArray arrayWithObjects:spacer, doneButton, nil]]; 
    [self.view addSubview:toolBar]; 

} 

Odpowiedz

17

Domyślnie, UIDatePicker używa wszelkich zaleceń, które dyktuje [NSLocale currentLocale].

Obiekt locale na UIDatePicker została zaniechana w iOS 5, ale wierzę, że można wykonać następujące czynności:

NSCalendar *cal = [NSCalendar currentCalendar]; 
cal.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
myDatePicker.calendar = cal; 

ten powinien pracy. Jeśli nie, proszę file a bug, a ja to naprawię. :)

+0

Dzięki, spróbuję tego !!! – user973067

+2

Dzięki Dave, ale to nie działa z jakiegoś powodu. Ktoś jeszcze z tym dylematem? Widziałem tutaj odpowiedź BBoga i wygląda to dość zniechęcająco: http://stackoverflow.com/questions/9638698/ios-change-language-for-uidatepicker-by-locale – Stavash

+0

To nie wygląda na to, że działa – sapatos

2

Pisząc po miesiącu, w tekście Brytyjczycy prawdopodobnie postawi pierwszy miesiąc (lub przynajmniej byłoby to dopuszczalne).

Ale aby odpowiedzieć na twoje pytanie, nie jestem świadomy sposobu zmiany formatu wyświetlania selektora daty, ale możesz zrobić to sam, używając UIPickerView z niestandardowym delegatem i źródłem danych.

+0

nie ..... dzień pierwszy ... hej, nie oznaczyłem cię! ;-) – Damo

+0

dzień pierwszy, gdy data jest jak 20/01/11, ale pisanie 20 stycznia 2011 r. Jest prawdopodobnie ok (zrzeczenie się: nie jestem brytyjska, ale mieszkam w Wielkiej Brytanii ...) – wattson12

+0

Dzięki. tak, to pierwszy dzień morst czasu, ale miesiąc pierwszy będzie do przyjęcia (To jest tylko mylące, gdy ludzie piszą w amerykański sposób jak 05/07/2012) Dzięki za twoją sugestię. – user973067

7

UIDatePicker jest dostosowywany do ustawień użytkownika. Zmiana formatu przy użyciu metody locale: była możliwa, ale obecnie jest przestarzała w systemie iOS 5.0.

Można zobaczyć format w ustawieniach telefonu iPhone:

Ustawienia> Ogólne> Narodowe> Format Region

Jeśli chcesz określonego formatu, należy rozważyć przeprowadzenie własne kompletacji ale jest bardzo zniechęcony do wybierania daty.

+0

dziękuję, próbowałem na urządzeniu i pogardzałem w brytyjski sposób. – user973067