Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

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);

Подобно классу UISwitch, вид для выбора даты также посылает своим целям инициирующие сообщения (Action Messages) всякий раз, когда отображаемая в виде дата изменяется. Чтобы иметь возможность реагировать на эти сообщения, получатель должен добавить себя в список целей вида выбора даты. Для этого используется метод addTarget: action: forControlEvents: следующим образом:

— (void) datePickerDateChanged:(UIDatePicker *)paramDatePicker{

if ([paramDatePicker isEqual: self.myDatePicker]){

NSLog(@"Selected date = %@", paramDatePicker.date);

}

}

— (void)viewDidLoad{

[super viewDidLoad];

self.myDatePicker = [[UIDatePicker alloc] init];

self.myDatePicker.center = self.view.center;

[self.view addSubview: self.myDatePicker];

[self.myDatePicker addTarget: self

action:@selector(datePickerDateChanged:)

forControlEvents: UIControlEventValueChanged];

}

Теперь всякий раз, когда пользователь изменяет дату, вы будете получать сообщение от вида выбора даты.

Пользуясь видом для выбора даты, можно задавать минимальную и максимальную даты, которые он способен отображать. Для этого сначала нужно переключить вид выбора даты в режим UIDatePickerModeDate, а потом с помощью свойств maximumDate и minimumDate откорректировать этот диапазон:

— (void)viewDidLoad{

[super viewDidLoad];

self.myDatePicker = [[UIDatePicker alloc] init];

self.myDatePicker.center = self.view.center;

self.myDatePicker.datePickerMode = UIDatePickerModeDate;

[self.view addSubview: self.myDatePicker];

NSTimeInterval oneYearTime = 365 * 24 * 60 * 60;

NSDate *todayDate = [NSDate date];

NSDate *oneYearFromToday = [todayDate

dateByAddingTimeInterval: oneYearTime];

NSDate *twoYearsFromToday = [todayDate

dateByAddingTimeInterval:2 * oneYearTime];

self.myDatePicker.minimumDate = oneYearFromToday;

self.myDatePicker.maximumDate = twoYearsFromToday;

}

Применяя два этих свойства, можно ограничить доступный пользователю диапазон выбора даты конкретными пределами, как показано на рис. 1.15. В приведенном образце кода мы позволяем пользователю задавать даты в диапазоне от года до двух лет, отсчитывая с настоящего момента.

Рис. 1.15. Минимальная и максимальная даты при работе с видом выбора даты

Если вы хотите применять вид выбора даты в качестве таймера обратного отсчета, нужно задать для этого вида режим UIDatePickerModeCountDownTimer и использовать свойство countDownDuration вида выбора даты для указания длительности обратного отсчета, задаваемой по умолчанию. Например, если вы желаете предложить пользователю такой таймер и задать в качестве периода ведения обратного отсчета 2 минуты, нужно написать следующий код:

— (void)viewDidLoad{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

self.myDatePicker = [[UIDatePicker alloc] init];

self.myDatePicker.center = self.view.center;

self.myDatePicker.datePickerMode = UIDatePickerModeCountDownTimer;

[self.view addSubview: self.myDatePicker];

NSTimeInterval twoMinutes = 2 * 60;

[self.myDatePicker setCountDownDuration: twoMinutes];

}

Результат показан на рис. 1.16.

Рис. 1.16. Таймер обратного отсчета в виде для выбора даты, где стандартная длительность обратного отсчета равна 2 минутам

1.6. Реализация инструмента для выбора временных рамок с помощью UISlider

Постановка задачи

Необходимо дать пользователям возможность указывать определенное значение из диапазона и предоставить для этого удобный в применении и интуитивно понятный пользовательский интерфейс.

Поделиться:
Популярные книги

Словарь петербуржца. Лексикон Северной столицы. История и современность

Синдаловский Наум Александрович
Научно-образовательная:
культурология
6.25
рейтинг книги
Словарь петербуржца. Лексикон Северной столицы. История и современность

Восьмое Небо

Соловьев Константин Сергеевич
Фантастика:
фэнтези
юмористическая фантастика
5.25
рейтинг книги
Восьмое Небо

Пушкин

Тынянов Юрий Николаевич
Я люблю Пушкина
Документальная литература:
биографии и мемуары
8.00
рейтинг книги
Пушкин

Буря Жнеца

Эриксон Стивен
7. «Малазанская империя»
Фантастика:
фэнтези
6.60
рейтинг книги
Буря Жнеца

Я уже бог. Книга XL

Дрейк Сириус
40. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я уже бог. Книга XL

Карл Ругер. Боец

Мах Макс
1. Карл Ругер
Фантастика:
фэнтези
6.50
рейтинг книги
Карл Ругер. Боец

Избранное

Зощенко Михаил Михайлович
Фантастика:
альтернативная история
8.00
рейтинг книги
Избранное

Локки 6. Потомок бога

Решетов Евгений Валерьевич
6. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 6. Потомок бога

Экспансия – I

Семенов Юлиан Семенович
10. Штирлиц
Детективы:
политические детективы
6.33
рейтинг книги
Экспансия – I

Валентин Серов

Кудря Аркадий Иванович
1136. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Валентин Серов

Искушение чародея (сборник)

Булычев Кир
Фантастика:
научная фантастика
космическая фантастика
6.20
рейтинг книги
Искушение чародея (сборник)

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Вихри Мраморной арки

Уиллис Конни
9. Сны разума
Фантастика:
научная фантастика
5.00
рейтинг книги
Вихри Мраморной арки

Я снова царь. Книга XXXIII

Дрейк Сириус
33. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова царь. Книга XXXIII