Вся Лекция 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 доступны на платной основе.