Метод даты UIDatePicker выбирает неправильную дату: iPhone Dev

Я получаю очень странное поведение на UIDatePicker. У меня есть представление со средством выбора даты, объявленным в.h файле как IBOutlet UIDatePicker *datePicker; с неатомарным свойством и сохраняют. datePicker правильно связан в файле IB.

В коде я назначаю минимум, максимум, начальную дату и действие для призыва к UICOntrolEventValueChanged использующий следующий код

If (!currentDate) {
    initialDate = [NSDate date];
} else {
    initialDate = currentdate;
}

[datePicker setMinimumDate:[NSDate date]];
[datePicker setMaximumDate:[[NSDate date] addTimeInterval:5 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years 
[datePicker setDate:initialDate animated:YES];

[datePicker addTarget:self action:@selector(getDatePickerValue:) forControlEvents:UIControlEventValueChanged];

В getDatePickerValue я получаю новую дату с помощью datePicker.date.

Когда представление закрывается (использование сделанной кнопки), я получаю текущее значение даты с помощью datePicker.date.

Теперь, если представление называют без 'currentDate', возвраты средства выбора 'сегодняшняя дата'. Это - то, что происходит в 'первый' раз, когда мой pickerView называют. Каждый последующий вызов к представлению, без 'текущей даты' дает мне различную и более позднюю дату с сегодняшнего дня. Так,

в первый раз, когда я добираюсь, сегодняшняя дата говорят 9 июня 2010
второй раз datePicker.date возвращается 10 июня 2010
в третий раз 11 июня 2010 и так далее. Хотя не всегда возрастающий, но главным образом это.

Я поместил NSLogs и проверил, что начальная дата назначена правильно.

Проблема находится только на устройстве (на ОС 3.0), проблема не копируется на средстве моделирования.

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

5
задан prd 9 June 2010 в 17:43
поделиться

1 ответ

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

Я сделал две вещи
1. Установить локали и календарь datePicker -

NSLocale *locale = [NSLocale currentLocale];
[dateFormatter setLocale:locale];

self.datePicker.locale = locale; 
self.datePicker.calendar = [locale objectForKey:NSLocaleCalendar];

Но это само по себе не решило проблему.
2. Я ставлю 'self' перед каждой ссылкой на datePicker, т.е. заменил весь datePicker на self.datePicker. Это, должно быть, заставило вызывать наборщиков и геттеров компилятора.

Я не до конца понимаю, почему неиспользования «я» заставило его вести себя так странно. Но да, я буду более осторожен с использованием правильных сеттеров для моих переменных.

Спасибо, что нашли время, чтобы посмотреть на мою проблему.

5
ответ дан 14 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: