Segue란?
Show(push)
: 대부분의 경우는 present modally로 동작하지만, 일부 뷰컨트롤러는 이 메소드를 오버라이드 해서 다른 동작을 취하기도 함.
: navigationController는 새로운 뷰컨트롤러를 스택에 push함.
: UIKit은 targetViewController(forAction:sender:) 메소드를 이용해 다음 뷰컨트롤러를 띄워줄 뷰컨트롤러를 찾게 된다. 해당 메소드는 뷰컨트롤러 계층을 올라가면서 show(:sender:)를 오버라이드한 뷰컨트롤러를 찾게 되는데(해당되는 컨트롤러는 navigation,splitView 등이 있다) 찾을 경우 반환된 뷰컨트롤러의 show(:sender)를 이용하고, 찾지 못할 경우 nil을 반환하여 present(:animated:completion:)을 사용하게 한다.
showDetail(Replace)
: UISplitViewController에서만 사용하는 것으로 SplitView의 두번째 자식 뷰컨트롤러(detail Controller)를 바꿔줌.
: 다른 뷰컨트롤러를 대상으로 하는 경우에는 present(:animated:completion:)로 동작함.
Present Modally
: 정해진(혹은 사용자가 설정한) presentationStyle과 transitionStyle에 따라 Modal하게 뷰 컨트롤러를 띄운다.
: presentationStyle에 따라 현재 뷰컨트롤러가 적절하지 않을경우에는 뷰컨트롤러 계층을 따라가면서 적절한 뷰컨트롤러를 발견했을 때 실제로 presentation이 실행된다.
(ex - presentation style이 fullscreen인 경우, 화면 전체를 덮는 뷰를 가진 뷰컨트롤러만이 present를 실행할 수 있다.)
Present as Popover
: 가로 길이가 regular 사이즈인 경우에는 popover로 띄우지만, 가로 길이가 compact 사이즈인 경우는 전체화면 Modal과 같아진다
Push
Modal
https://deliorange.tistory.com/25
https://jcsoohwancho.github.io/2019-07-28-Segue-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0/
https://gcempire.tistory.com/504