>self.myPicker.showsSelectionIndicator = YES;
Снова предположим, что мы создаем вид выбора в окончательной версии нашего приложения. Какая польза от вида выбора, если мы не можем определить, что именно пользователь выбрал в каждом из компонентов? Да, хорошо, что Apple уже позаботилась о решении этой проблемы и предоставила нам возможность спрашивать вид выбора о выбранном варианте. Вызовем метод selectedRowInComponent: класса UIPickerView и передадим индекс компонента (с нулевым основанием), а в качестве возвращаемого значения получим целое число. Это число будет представлять собой индекс с нулевым основанием, сообщающий строку, которая в данный момент выбрана в интересующем нас компоненте.
Если во время исполнения вам потребуется изменить значения, содержащиеся в вашем виде выбора, необходимо гарантировать, что вид выбора сможет перегружать данные, заменяя старую информацию новой, получаемой из источника и от делегата. Для этого нужно либо принудительно заставить все компоненты перезагрузить содержащиеся в них данные (это делается с помощью метода reloadAllComponents), либо приказать конкретному компоненту перезагрузить содержащиеся в нем данные. Во втором случае применяется метод reloadComponent:. Ему передается индекс компонента, который необходимо перезагрузить.
См. также
Раздел 1.2.
1.5. Выбор даты и времени с помощью UIDatePicker
Постановка задачи
Необходимо предоставить пользователям вашего приложения возможность выбирать дату и время. Для этого нужен интуитивно понятный и уже готовый пользовательский интерфейс.
Решение
Воспользуйтесь классом UIDatePicker.
Обсуждение
Класс UIDatePicker очень напоминает класс UIPickerView. Фактически UIDatePicker – это уже заполненный вид выбора. Хорошим примером такого вида является программа Calendar (Календарь) в iPhone (рис. 1.13).
Рис. 1.13. Вид для выбора даты показан в нижней части экрана
Для начала объявим свойство типа UIDatePicker, а потом выделим и инициализируем это свойство и добавим его в вид, в котором находится контроллер нашего вида:
>#import "ViewController.h"
>@interface ViewController ()
>@property (nonatomic, strong) UIDatePicker *myDatePicker;
>@end
>@implementation ViewController
>…
А теперь, как и планировалось, инстанцируем вид для выбора даты:
>– (void)viewDidLoad{
>[super viewDidLoad];
>self.myDatePicker = [[UIDatePicker alloc] init];
>self.myDatePicker.center = self.view.center;
>[self.view addSubview: self.myDatePicker];
>}
После этого запустим приложение и посмотрим, как оно выглядит (рис. 1.14).
Рис. 1.14. Простой вид для выбора даты
Как видите, по умолчанию в виде выбора даты ставится сегодняшняя дата. Начиная работать с такими инструментами, первым делом нужно уяснить, что они могут иметь различные стили оформления и режимы работы. Режим можно изменить, работая со свойством datePickerMode, тип которого – UIDatePickerMode:
>typedef enum {
>UIDatePickerModeTime,
>UIDatePickerModeDate,
>UIDatePickerModeDateAndTime,
>UIDatePickerModeCountDownTimer,
>} UIDatePickerMode;
В зависимости от конкретной задачи, стоящей перед вами, для режима вида выбора даты можно задать любое из значений, перечисленных в списке UIDatePickerMode. Далее по мере обсуждения данной темы мы рассмотрим некоторые из этих значений.
Теперь, когда вы успешно смогли отобразить на экране вид для выбора даты, можно попытаться получить дату, которая выведена в нем в настоящий момент. Для получения этой информации используется свойство date данного вида. Другой способ – применить метод date к виду выбора даты:
>NSDate *currentDate = self.myDatePicker.date;
>NSLog(@"Date = %@", currentDate);