NSNotification на Swift: пример использования

NSNotification-proSwift_ru

Как и обещал, в данной статье будет описан пример iOS приложения на языке Swift в среде разработки Xcode, которе использует встроенный механизм посылки, приема и обработки сообщений NSNotification.

Итак, давайте создадим простое приложения с набором разноцветных UIView и кнопкой, по нажатию на которую эти view будут изменять свое местоположение.

Создание приложения

Как обычно откройте  Xcode, нажмите на создание нового приложения Single View Application. В файле с классом ViewController измените код класса  — добавьте три свойства и измените метод viewDidLoad():

Все достаточно стандартно. Три цветных UIView  и одну оранжевую кнопку мы добавили программно — из кода. Если запустить приложение, то вы увидите следующую картину:

NSNotification_proSwift_ru_z9c0a

Если быть точным, то приложение не запуститься, пока мы не добавим метод runActon() обработки нажатия на оранжевую кнопку. Для начала можно просто вывести уведомление в консоль.

Добавление наблюдателя, реакции и посыл уведомления.

Для реализации нашей задумки вовсе не обязательно использовать механизм NSNotification. Однако для демонстрации возможностей связь между нажатием кнопки и цветными UIView мы сделаем с помощью уведомлений.

Нам нужно в центр уведомлений добавить наблюдателя определенного события.  После добавления кнопки на экран в метод  viewDidLoad() добавьте строку

Внимательно посмотрите на эту строку. Конструкция NSNotificationCenter.defaultCenter() возвращает центр уведомления операционной системы. Методом addObserver() мы добавляем наблюдателя. Наблюдателем будет наш класс ViewController, поэтому в первый параметр мы передаем self. Следующий параметр — это имя метода, который будет вызван у нашего  ViewController  при получении уведомления. Параметр name — это имя уведомления, по которому центр уведомлений будет отслеживать и реагировать на получение уведомления. Последний параметр — nli, однако следует учитывать, что можно передать определенные данные с помощью уведомлений и в последующем их обработать.

Мы добавили наблюдателя, теперь нужно добавить метод реакции — notificationAction(). В нем можно сделать все что угодно. Я изменю положение цветных вьюшек на экране. Как сделать анимацию в iOS приложении можно почитать в статье Особенности анимации UIView

Теперь нужно послать уведомление с нужным нами именем.  Посылать это уведомление мы будем при нажатии на оранжевую кнопку. Поэтому в метод runAction() следует изменить:

Мы просим центр уведомлений послать уведомление с именем «OrangeButtonTapped«. Т.к. у нас есть слушатель уведомления с таким именем, — у нас вызовется метод notificationAction().

Вот и все. Запустим наше приложение.

NSNotification_proSwift_ru_jkdzb

Подписка на системное уведомление

Мы самостоятельно заставили послать уведомление и отреагировали на него. Стоит отметить, что iOS приложение посылает уведомления при переходах между состояниями жизненного цикла. (можно почитать в статье iOS Application Lifecycle, или жизненный цикл iOS приложения). Давайте добавим наблюдателя и реакцию на это событие. На самом деле наблюдатель добавляется одной строкой, а реакция может быть какой угодно. Мы выведем сроку в консоль.

В конец метода viewDidLoad() добавьте строку:

И реакцию на событие в метод, указанный в #selector:

Посыл уведомления случится при переходе приложения в фон. Запустите и проверьте что получилось.

NSNotification_proSwift_ru_dwfom

Ссылка на GitHub

https://github.com/Ironrnd/NSNotification

Опубликовано в Реальные примеры, Элементы UI Метки: