В чем разница между модальным и push-переходом в раскадровке? - PullRequest
175 голосов
/ 22 февраля 2012

Может кто-нибудь объяснить мне, какова точная разница между modal и push segue?

Я знаю, что когда мы используем push, то переход добавляется в стек, поэтому, когда мы сохраняемиспользуя push он продолжает занимать память?

Может кто-нибудь показать мне, как эти два реализованы?

Modal segues можно создать, просто ctrl-click и перетаскивая к месту назначения, но когда я делаю это с push, мое приложение вылетает.

Я нажимаю кнопку на UINavigationController с UIViewController.

Ответы [ 4 ]

171 голосов
/ 22 февраля 2012

A push Segue добавляет еще один VC в стек навигации. Это предполагает, что VC, который инициирует push, является частью того же контроллера навигации, к которому принадлежит VC, который добавляется в стек. Управление памятью не проблема с навигационными контроллерами и глубоким стеком. Пока вы заботитесь об объектах, которые вы можете передавать из одного VC в другой, среда выполнения будет заботиться о стеке навигации. Смотрите изображение для визуальной индикации: NavStack

A модальный Segue - это всего лишь один VC, представляющий другой VC модально. VC не обязательно должны быть частью контроллера навигации, а VC, представляемый модально, как правило, считается «дочерним» для представляющего (родительского) VC. Модально представленный VC обычно не содержит никаких панелей навигации или панелей вкладок. Представляющий VC также ответственен за отклонение модального VC, который он создал и представил.

Надеюсь, это поможет.

15 голосов
/ 12 июля 2017

Обновление Swift 3.0 и XCode 8.2.1

1.Push Segue

Push segue переименовано в Show segue.Для создания push-перехода родительский контроллер представления должен быть встроен в контроллер навигации.Контроллер навигации предоставляет панель навигации.После того, как вы соедините два контроллера представления с push segue, дочерний контроллер представления автоматически будет иметь панель навигации вверху.Контроллер дочернего представления будет добавлен поверх стека навигации.

enter image description here

Функция push-segue также предоставляет функции по умолчанию.Дочерний контроллер представления будет иметь кнопку возврата, которая возвращает вас к родительскому контроллеру представления.Вы также можете провести вправо, чтобы открыть дочерний контроллер вида.Анимация для push-перехода похожа на скольжение страниц по горизонтали.

enter image description here

В то время как вы можете выполнять push-переход от контроллера представления, который не находится вконтроллер навигации, вы потеряете все функции, такие как панель навигации, анимация, жест и т. д. при этом.В этом случае вы должны сначала встроить свой родительский контроллер представления в контроллер навигационного представления, а затем выполнить переход на дочерние контроллеры представления.

enter image description here

2.Модальный переход

Модальный переход (т. Е. Присутствует модально), с другой стороны, присутствует поверх текущего контроллера вида.Дочерний контроллер представления не наследует контроллер навигационного представления, поэтому панель навигации будет потеряна, если вы представите модальный переход от контроллера представления с контроллером навигационного представления.Вы должны снова встроить дочерний контроллер представления в контроллер навигации и запустить новый стек навигации, если хотите вернуть его обратно.Если вы хотите вернуться к родительскому контроллеру представления, вы должны реализовать это самостоятельно и вызвать dismiss из кода.

enter image description here

Анимация для модальныхСледствием этого является то, что дочерний контроллер представления появится снизу страницы.Контроллер навигационного представления также пропал в этой демонстрации

enter image description here

6 голосов
/ 22 февраля 2012

Просмотр толчка должен быть встроен в navigationController.

Нажмите на master view, затем в строке меню выберите:

EDITOR->embed in->navigationController
1 голос
/ 08 апреля 2013

Это перемещение элементов управления с использованием пользовательских методов push и segue для раскадровки Story Board

А Modal - это способ навигации по представлениям без использования раскадровок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...