Ios – the difference between Modal and Push segue in Storyboards

iosobjective cstoryboardswift

Can someone explain to me what is the exact difference between modal and push segue?

I know that when we use push the segue gets added to a stack, so when we keep using push it keeps occupying memory?

Can someone please show me how these two are implemented?

Modal segues can be created by simply ctrl-click and dragging to destination but when I do that with the push my app crashes.

I am pushing from a button to a UINavigationController that has a UIViewController.

Best Answer

A push Segue is adding another VC to the navigation stack. This assumes that VC that originates the push is part of the same navigation controller that the VC that is being added to the stack belongs to. Memory management is not an issue with navigation controllers and a deep stack. As long as you are taking care of objects you might be passing from one VC to another, the runtime will take care of the navigation stack. See the image for a visual indication: NavStack

A modal Segue is just one VC presenting another VC modally. The VCs don't have to be part of a navigation controller and the VC being presented modally is generally considered to be a "child" of the presenting (parent) VC. The modally presented VC is usually sans any navigation bars or tab bars. The presenting VC is also responsible for dismissing the modal VC it created and presented.

Hope this helps.