UIDatePicker Исключение при вызове метода setDatePickerMode с форматом региона, установленным на тайваньский календарь на японский - PullRequest
4 голосов
/ 09 мая 2011

Мы используем стандартное представление UIDatePicker, чтобы позволить пользователю установить продолжительность обратного отсчета с помощью средства выбора. Код выглядит следующим образом:

//in the header file
UIDatePicker *pickerView;

//in the implementation file, the error is thrown when this line executes
[self.pickerView setDatePickerMode:UIDatePickerModeCountDownTimer];

В большинстве случаев это работает нормально, однако у нас есть пользователь, у которого формат региона установлен на Тайвань, а календарь - на японский. Затем возникает следующее исключение:

2011-05-08 21: 38: 13.701 AppName [6418: 207] * Утверждение ошибка в - [UIDatePickerView _updateRowInColumn: toValue: withRepeatingAmount: элемент: анимированный:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UIDatePicker.m:1499 2011-05-08 21: 38: 13.703 AppName [6418: 207] Завершение приложения из-за неисследованного исключения 'NSInternalInconsistencyException', причина: слишком много строк для колонка: 1 ' ** Стек вызовов при первом броске: (0 CoreFoundation
0x00fa3be9 __exceptionPreprocess + 185 1 libobjc.A.dylib
0x010f85c2 objc_exception_throw + 47 2 CoreFoundation
0x00f5c628 + [NSException поднять: формат: аргументы:] + 136 3
Фонд
0x000d447b - [NSAssertionHandler handleFailureInMethod: объект: файл LINENUMBER: Описание:] + 116 4 UIKit 0x004b1e4e - [UIDatePickerView _updateRowInColumn: toValue: withRepeatingAmount: элемент: анимированные:] + 695 5 UIKit 0x004b5254 - [UIDatePickerView _loadDateAnimated:] + 1012

У кого-нибудь есть опыт работы с вышеуказанной ошибкой или как обойти это? Кажется, что есть проблема с григорианской против не григорианской операцией этого компонента. Из того, что я понял, компонент берет настройки пользователя, если не задано значение по умолчанию:

Из UIDatePicker.h:

@property(nonatomic,retain) NSLocale      *locale;                // default is nil. use current locale or locale from calendar
@property(nonatomic,retain) NSTimeZone    *timeZone;              // default is nil. use current time zone or time zone from calendar
@property(nonatomic,copy)   NSCalendar    *calendar;              // default is [NSCalendar currentCalendar]. setting nil returns to default

Ответы [ 2 ]

0 голосов
/ 21 октября 2011

Раньше это была ошибка, которая теперь устранена с выпуском iOS 5.

0 голосов
/ 03 июля 2011

вы создали свойство для вашей переменной экземпляра pickerView?Поскольку вы не упомянули об этом в этом вопросе, мне интересно, как вы получаете доступ к методам установки для pickerView без создания свойства, такого как @property (nonatomic, retain) UIDatePicker * pickerView;

...