Как в pickerview может быть указана дата? - PullRequest
0 голосов
/ 28 сентября 2011

Мне нужно добавить компонент даты в мой PickerView. Любые идеи о том, как получить компонент даты? Один из способов - вручную сохранить всю информацию, связанную с датами, взять текущую дату, сложить и вычесть, чтобы получить нужные даты, но это очень утомительно, какие-либо другие методы?

Integrated PickerView with date component

РЕДАКТИРОВАТЬ: я еще не собирался писать код, мне нужно несколько идей о том, как получить значения для компонента даты (не пользовательский интерфейс). Одно из решений, которое у меня есть, - взять текущую дату, а затем использовать dateByAddingTimeInterval, чтобы сохранить последние 50 и следующие 50 дней, но его подход очень грубый. Есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Исходя из комментариев здесь:

Я предлагаю вам попробовать этот подход.

  1. Создание один UIPickerView.
  2. Установка его параметров (шаг 1 в классе, который реализует UIPickerViewDataSource):
    1. Реализуйте - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView, который предоставит количество компонентов. В вашем случае это 3 : return 3;
    2. Реализация - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component, которая будет возвращать номер строки для каждого компонента.
  3. Установка его параметров (шаг 1 в классе, который реализует UIPickerViewDelegate):
    1. Реализация - (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view, которая будет возвращать UILabel для компонента 0 и 1 и UIView с двумя UILabel в качестве подпредставления (серый и черный) для компонента 2

Также вы можете сделать больше настроек, реализовав другие методы в классе делегата:

Настройка размеров вида сборщика

– pickerView:rowHeightForComponent:
– pickerView:widthForComponent:

Настройка содержимого строк компонентов

– pickerView:titleForRow:forComponent:

Полный список методов вы можете найти здесь: Справочник по протоколу UIPickerViewDelegate

0 голосов
/ 14 ноября 2011

Я пошел дальше и использовал тот же подход, который упомянул в вопросе (приведенном ниже).Хотя он грубый, он выполняет свою работу.Я не проверял этот подход для больших значений даты в третьем компоненте.На данный момент у меня есть только (30 + 30) значений, включая текущую дату и ее довольно стабильную и быструю.

"У меня есть одно решение - взять текущую дату, а затем использовать ' dateByAddingTimeInterval ', чтобы сохранить последние 50 и следующие 50 дней, но его подход очень груб. "

...