2012-01-20 7 views
5

Estoy usando un DatePicker con ventanas emergentes cuando un usuario hace clic en un campo de texto. Sin embargo, el selector muestra el mes primero, no la fecha primero y no es la forma británica de escribir una fecha. ¿Hay alguna manera de establecer el formato de fecha en DatePicker a modo británico como dd/mm/aaaa? Uso una Achtionsheet:iPhone: DatePicker dd/mm/aaa

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

} 

Respuesta

17

El UIDatePicker, de forma predeterminada, utiliza lo que [NSLocale currentLocale] dicta.

La propiedad locale en UIDatePicker está desfasada y en iOS 5, pero creo que se podría hacer lo siguiente:

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

Este trabajo debe . Si no lo hace, por favor file a bug y lo arreglaré. :)

+0

¡Gracias, probaré esto! – user973067

+2

Gracias Dave, pero esto no funciona por alguna razón. ¿Alguien más con este dilema? Vi la respuesta de BBog aquí y parece bastante desalentadora: http://stackoverflow.com/questions/9638698/ios-change-language-for-uidatepicker-by-locale – Stavash

+0

Esto no parece funcionar – sapatos

2

Al escribir el mes en el texto de los británicos probablemente sería poner en primer lugar el mes (o al menos sería aceptable).

Pero para responder a su pregunta, no conozco una forma de cambiar el formato de visualización del selector de fecha, pero podría hacerlo usted mismo utilizando un UIPickerView con un delegado personalizado y una fuente de datos.

+0

no ..... día primero ... oye, ¡no te marqué! ;-) – Damo

+0

día primero cuando la fecha es como 20/01/11 pero escribir el 20 de enero de 2011 probablemente sea correcto (descargo de responsabilidad: no soy británico, pero vivo en el Reino Unido ...) – wattson12

+0

Gracias. sí, es el primer día del día, pero el mes primero sería aceptable (solo es confuso cuando las personas escriben en Estados Unidos, como el 05/07/2012) Gracias por su sugerencia de todos modos. – user973067

7

El UIDatePicker está diseñado para adaptarse a la configuración del usuario. Cambiar su formato utilizando el método locale: fue posible, pero ahora está en desuso en iOS 5.0.

Puede ver su formato en la configuración de tu iPhone:

Ajustes> General> Internacional> Formato Región

Si desea un formato específico, considere hacer su propio selector pero es muy desalentador para un selector de fecha.

+0

gracias, lo probé en un dispositivo y se reprodujo de manera británica. – user973067