Это не частичный отбор. Это не segue вообще, он использует контроллеры представления сдерживания.
Вместо одного контроллера вида, который переходит к другому контроллеру представления, один контроллер основного вида. Для простоты мы скажем, что этот контроллер представления имеет два вида (от корня), оба из которых покрывают весь экран. В этом примере рассмотрим их как «основное» представление и «меню».
Помимо этих двух пустых представлений контроллер представления не имеет содержимого. Это связано с тем, что этот контроллер просмотра ничего не делает, кроме управления другими контроллерами представлений, которые застревают в двух представлениях. У них будет несколько способов управлять ими, например, presentInMainView:(UIViewController *)viewcontroller
и presentInMenuView:(UIViewController *)viewcontroller
Когда программа запускается, главный контроллер просмотра программно добавит карту в ее «основной» вид. Контроллер отображения карты теперь охватывает весь экран и выглядит так, как будто это контроллер верхнего уровня, но это не так. Он содержится. В какой-то момент несколько нажатий кнопки настроек и контроллер отображения карты совершают вызов его родителям и говорят presentInMenuView:...
, а контроллер главного представления затем загрузит второй контроллер представления в вид меню. Вид меню может быть даже расположен с левой стороны экрана, а главный контроллер просмотра оживляет рамку просмотра меню, чтобы он был справа, охватывая весь экран. Предполагая, что контроллер меню имеет только контент, который покрывает левую половину экрана, вы увидите, как скрывается контроллер отображения карты.
Это действительно только царапины на поверхности, много может быть сделано с помощью контроллеров контейнеров. Вы можете создать контейнер, который позволит вам отображать десятки различных видов, все заполненные с помощью разных контроллеров представлений. Вы можете настроить и упорядочить их по всему экрану, и каждому контроллеру детского вида все равно придется иметь дело с собственным содержимым.
Для получения дополнительной информации есть the Apple Developer Guide и WWDC 2011 Videos, где она была введена (сессия 102)