iOS
177
телям более знакомой, и они с большей вероятностью подпишутся на вашу рас
-
сылку (или дадут вашему приложению хороший рейтинг), если вы используете их.
Однако если эти инструменты не соответствуют вашим требованиям, есть возмож
-
ность создать (или изменить) свои компоненты
пользовательского интерфейса,
лучше подходящие для вашего случая.
iOS
Прочитавшие раздел об Android этой главы быстро заметят, что в данной сфере
iOS и Android сильно отличаются друг от друга, и одно из наиболее заметных
отличий – доступные способы отображения обратной связи. Давайте посмот-
рим, что доступно в iOS и какие варианты пользуются наибольшей популяр
-
ностью.
Отображение обратной связи
с использованием системных инструментов
В iOS есть два способа отображения обратной связи: предупреждения и
листы
запроса пользовательских действий (action sheets). Оба реализованы на основе
класса
UIAlertController
и отличаются только передачей аргумента
.alert
или
.actionSheet
.
В iOS нет встроенной поддержки вывода уведомлений в стиле
Snackbar
. Однако
аналогичный эффект можно получить с помощью сторонней библиотеки, но мы не
будем обсуждать эту возможность, так как это выходит далеко за рамки данной
книги.
Apple в своей документации не дает четких указаний, когда лучше исполь
-
зовать листы действий, а когда предупреждения, однако за многие годы был
выработан стандарт де-факто – использовать предупреждения, когда неожи
-
данно
возникло событие, требующее
немедленной обратной связи, а листы
действий – в
ответ на действия пользователя,
когда пользователю понятен
контекст выполняемого действия и требуется, чтобы он выбрал один из вари
-
антов.
Вот пример отображения предупреждения:
let viewController = UIViewController(nibName: ..., bundle: ...)
let alert = UIAlertController(
title: "Title", message: "This is the message", preferredStyle: .alert)
alert.addAction(
UIAlertAction(title: "OK", style: .default, handler: { (action) in
print("OK button pressed!")
}))
viewController.present(alert, animated: true, completion: nil)
Рассмотрим этот код подробнее.
Сначала создается контроллер представлений, который потом будет задей
-
ствован для отображения предупреждений. Начиная с версии iOS 8 представ
-
178
Обратная
связь с пользователем
ления предупреждений фактически
являются экземплярами
UIViewController
и могут отображаться другими контроллерами представлений, как любые дру
-
гие представления. Далее вызовом инициализатора
UIAlertController
создает
-
ся экземпляр предупреждения. Ему передаются параметры
title
,
message
и
pre
ferredStyle
. В последнем параметре передается аргумент
.alert
, указывающий,
что создается предупреждение; если передать аргумент
.actionSheet
, будет соз
-
дан лист действий.
В следующей строке вызывается метод
addAction(_:)
, чтобы добавить кнопку
в предупреждение. Здесь мы непосредственно создаем экземпляр
UIAlertAction
для передачи в этот метод, определив заголовок, стиль (в данном случае
.de
fault
) и обработчик кнопки. Внутри обработчика мы выводим сообщение
Do'stlaringiz bilan baham: