В чем разница между Modal и Push segue в Storyboards?

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

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

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

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

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

Ответ 1

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

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

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

Ответ 2

Представление push должно быть построено в navigationController.

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

EDITOR->embed in->navigationController

Ответ 3

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

1. Push Segue

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

введите описание изображения здесь

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

введите описание изображения здесь

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

введите описание изображения здесь

2. Модальный Segue

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

введите описание изображения здесь

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

введите описание изображения здесь

Ответ 4

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

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