Лекция 16 CS193P Fall 2017 — Еще больше Segues.

Вся Лекция 16 посвящена Segues. Мы уже изучили на прошлых Лекциях Show segue и Show Detail segue, которые работают в Navigation Controllers и Split View Controllers.

На Лекции 16 изучаются все оставшиеся типы Segues: Modal, Unwind, Popover, Emded.

Сначала излагается теоретическая часть по каждому виду Segue, а затем для этого вида Segue следует небольшой демонстрационный пример, показывающий Segue в действии. В результате у профессора формируется блестящий демонстрационный пример, в котором несмотря на различия Segues — Modal и Popover адаптируют свое представление на iPhone, а функционирование Emded вообще не зависит от платформы, все Segues создают новые MVCs,  а Unwind — нет, —  все они работают «бок о бок» в одном приложении и даже разделяют код.

Segues

Первым Пол Хэгерти рассматривает модальный Modal Segue. Здесь приходится решать проблему возврата данных тому MVC, который вывел вас на экран с помощью Modal Segue, и удаления модального View Controller с экрана. По ходу дела решаются вопросы настройки ограничений (contstraints) системы Autolayout в коде: их создание, удаление и регулирования с помощью характеристик Constant и Multiplier.

Повышенное внимание в Лекции 16 уделяется специальной разновидности модальных Segues — Popover Segues.  Очень важная часть, касающаяся Popover, — это размер  “всплывающего” окна. Вам действительно нравится, когда появляется абсолютно идеально подогнанное к размеру MVC.  В любом случае вы хотели бы реально управлять размером и профессор показывает, как этого можно достичь. C помочью методов делегата  UIPopoverPresentationControllerDelegate вы можете управлять не только внешним видом  Popover, но и его адаптивным поведением для разных Size Classes.

Далее очень подробно рассматриваются Unwind Segues, которые подходят для передачи информации в обратном направлении при модальном представлении. Они также хороши, если у вас есть Navigation Controller c большим количеством View Controllers в стэке, и вы хотите “перепрыгнуть” назад более чем через один View Controller, например, сразу через 3 уровня назад. Создание  Unwind Segues требует написания специальных методов, о которых подробно рассказывается в Лекции 16. 

Следующий тип segue — Embed Segue для «вставки картинки в картинку». Это, когда вы берете self.view одного MVC (ну, вы знаете, это топовый уровень View) и помещаете его внутрь  иерархии views другого MVC.  И получается вставка View в другой MVC, но она полностью управляется исходным MVC. Это очень мощная техника инкапсуляции и в то же время и очень легкая в использовании, так как Xcode делает процесс такой “вставки” реально легким. Однако использование Embed Segue требует «захвата» с помощью указателя вставляемого MVC на этапе подготовки и обновления его на более поздних стадиях загрузки. 

Код демонстрационного примера для Лекции 16, который послал професcор, находится на Github  для iOS 11  и на Github для iOS 12 в папке EmojiArt L16.  Лекция 16 и слайды на английском языке находятся на  iTunes название “16. More Segues.”
Русскоязычный неавторизованный конспект Лекции 16, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе.