View Controller Lifecycle, жизненный цикл View Controller

Итак жизненный цикл контроллера начинает с создания. Как я уже писал раньше  — в 99% случаях создание происходит в storyboard, и «за сценой» происходит инициализация

А что потом? А вот что:

  1. Подготовка  к переходу в контроллер
  2. Установка outlet свойств
  3. Появление на экране и уход с экрана
  4. Изменение геометрии (поворот, изменение границ)
  5. Ситуация с недостатком пямити устройства

Первый пункт: другой контроллер приготавливается к переходу в наш. При этой подготовке outlet свойства еще не установлены. К ним обращаться нельзя!

Далее все outlet свойства устанавливаются.

После инициализации и установки outlet свойств система вызывает viewDidLoad. Это самое отличное место чтобы выполнить большинство установок для контроллера. Посудите сами — в подготовке все нужные данные переданы, свойства установлены — самое время что-то настроить.

Геометрия (границы) еще не установлены. Нельзя здесь обрабатывать значения геометрии

Далее появления на экране: прямо перед появлением  view на экране мы получаем уведомление вызовом 

 Загрузка происходит единожды, а вот появление и уход с экрана — многократно. Например в UISplitViewController — на iPad в портретном режиме не видно master, но он есть, а при повороте экрана master появляется слева. Еще в данный момент уже установлена геометрия. Т.е.  границы

установлены, но с этими параметрами удобнее работать позднее…

Далее, сразу после появления view на экране вызывается метод


Если view  ушло с экрана вызываются методы

Тут можно почистить что-нибудь на экране, но не сильно напрасными методами. Если то что здесь запустить будет стоить много ресурсов — приложение будет тормозить.

Геометрия. Система знает когда поменялись границы нашего view. И она вызывает методы

Нужно понимать, что это не функция ВьюВКонтроллереИзменилаГраницы(). Расположение всех элементов пользовательского интерфейса задаются параметрами   Autolayout (понимание которого приходит только если его делать снова и снова), и эти два метода вызываются чтобы убедится, что расстановка выполнена правильно (до начала расстановки и сразу после нее)

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

Ну и в очень редких случаях система может послать сообщение о нехватке памяти

Тут можно попробовать обнулить объекты, которые не используются.

 

Нужно сказать еще про один метод — awakeFromNib — он не является частью ViewController Lifecycle, ну нужно понимать что он вызывается сразу после инициализации, перед подготовкой перехода у контроллера, который задан с помощью storyboard.   Это хорошее место чтобы указать класс делегата для, допустим, UISplitViewController.

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

Опубликовано в Iron ribbon, Фундаментальные основы, Элементы UI Метки: ,
2 комментария на “View Controller Lifecycle, жизненный цикл View Controller
  1. Максим:

    Спасибо, хорошо структурировано.
    А следущая часть есть?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*