Лекция 7 CS193P Fall 2017 — Multiple MVCs, Timer, and Animation (Множественные MVCs, Таймер и Анимация).

В Лекции 7 представлена подробная теоретическая и практическая часть такой большой темы как «Множественные MVCs«. Сначала подробно на конкретных приложениях рассматриваются принципы функционирования 3-х поставляемых Apple множественных MVCsTabBarController, SplitViewController и NavigationController. Наибольшее внимание уделено самому гибкому и мощному из всех множественных MVCs — NavigationController, который представляется в виде “стопки карт”, где каждая карта — это отдельный MVC. NavigationController позволяет вам положить конкретный MVC на самый верх “стопки карт”, загораживая все остальные карты, которые находятся ниже. Но это так сказать внешняя сторона функционирования множественных MVCs, которой они обращены к пользователю.

Далее профессор на примере NavigationController показывает, как множественные  MVCs работают «за кулисами» с точки зрения идеологии MVC, так как все множественные MVCs предоставляют часть своего View другим MVCs. В результате мы понимаем, что если что-то размещается на самом верху “стопки карт” NavigationController, то создается совершенно новый экземпляр этого MVC, а когда мы покидаем его, то этот MVC полностью выбрасывается. И это нормальная операция, производимая NavigationController.

Затем профессор рассказывает, как в коде нужно иметь дело с множественными MVCs, потом он переходит на storyboard и показывает, как соединить все эти MVCs — и множественные, и ваши конкретные — в Interface Builder. И тут появляется то, что называется Segue, который АВТОМАТИЧЕСКИ осуществляет «переезд» от одного MVC к другому MVC. В Лекции 7 рассматриваются только два типа Segues: Show для NavigationController и Show Detail для SplitViewController.

Далее следует прекрасный демонстрационный пример с возможностью выбора Темы для игры Концентрация, в котором изложены все тонкости использования множественными MVCs, :

  • как построить большие приложения, которые состоят из комбинаций различных MVCs,
  •  segues и подготовка MVC с помощью метода prepare (forSegue:)
  • Master и Detail для SplitViewController
  •   SplitViewController для iPhone НЕ +
  • как удерживать MVC  в “куче” (heap) даже если этот MVC “выбрасывается” из навигационного стека
  • как можно “толкнуть” MVC в навигационный стек, не используя “переезд” (Segue)
  • как можно использовать специальный метод делегата UISplitViewControllerDelegate, чтобы стартовым экраном на iPhone версии в адаптированном SplitViewController был Master (для нашего случая MVC «Выбор темы»)

После такой Лекции множественные MVCs перестанут быть для вас проблемой.

В конце Лекции 7 рассматривается простой маленький класс таймер Time. Таймер — это просто способ выполнять блок кода снова и снова с некоторым периодом времени. В действительности мы не используем таймеры для анимации как таковой, но иногда при выполнении анимации мы привлекаем таймеры. 

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

В заключении Лекции 7 профессор делает небольшой обзор типов анимации, которые доступны в iOS, но фокусируется на анимации views (UIViews) и переносит ее подробное рассмотрение на следующую Лекцию.

Код демонстрационного примера для Лекции 7 находится на Github в папке Concentration L7.

Лекция 7 и слайды на английском языке находятся на  iTunes название “7. Multiple MVCs, Timer, and Animation.”

Русскоязычный неавторизованный конспект Лекции 7, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе.

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

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