Пользовательский UIPickerView с совместимостью с локалью

Я делаю собственный TimePicker из UIPickerView. У меня он отлично работает, за исключением случаев, когда дело доходит до отображения часов. Я хочу, чтобы он функционировал точно так же, как UIDatePicker, чтобы он соответствовал пользовательской настройке Locale. Если выбран французский язык, время должно отображаться в 24-часовом формате. Если у них есть США, он должен отображаться в 12-часовом формате.

У меня есть массив hoursArray, который идет от 0 до 23. Затем я запускаю этот код, чтобы преобразовать его в нужный формат. Однако он не хочет переходить на 24-часовой формат, если этот параметр установлен в разделе «Настройки» -> «Международный».

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];//[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setDateFormat:@"H"];
NSDate *tempDate = [dateFormatter dateFromString:[hoursArray objectAtIndex:row]];
[dateFormatter setDateFormat:@"h"];

return [dateFormatter stringFromDate:tempDate];

Я попытался изменить [dateFormatter setDateFormat:@"h"]; на [dateFormatter setDateFormat:@"H"];, так как документ Apple говорит, что личные настройки пользователя переопределяют его, но, похоже, это не так.

Как заставить dateFormatter правильно следовать языковым настройкам пользователя?


person Bot    schedule 03.10.2012    source источник


Ответы (1)


В моем случае переопределение пользовательских настроек работало нормально, и это было плохо для меня.!!! Попробуйте установить язык форматирования даты как

[dateFormatter setLocale:[NSLocale systemLocale]];

Если это не сработало, попробуйте удалить код, в котором вы задали локаль, потому что NSDateFormatter автоматически учитывает пользовательские настройки.

person prince    schedule 24.05.2013