- Segue 는 [ségwei]라고 발음한다. segue way 가 아니었던것..(쪽팔리다)
Segue의 역할
![](https://velog.velcdn.com/images/rudin_/post/0b455f5b-532b-440a-9b1b-1f05fd2102ee/image.png)
Segue의 연결 방식
- 씬끼리 연결
- 씬 자체는 탭 이벤트 발생 X
- segue를 코드로 실행 [참고]
- 컨트롤과 씬을 연결
- 컨트롤에서 터치 이벤트 발생 시 segue 자동 실행
- 버튼이나 테이블뷰 셀 처럼 선택 가능한 컨트롤과 연결
화면 전환 시퀀스
![](https://velog.velcdn.com/images/rudin_/post/5d00a223-cc37-448b-89a8-2078a1f3e45f/image.png)
- 여기에서 true가 리턴되면 segue 객체가 만들어짐
- destination view Controller가 만들어짐
2. Destination: init()
3. Destination: awakeFromNib()
4. Source: prepare(for:sender:)
- 화면 전환 전 필요한 준비작업
- 데이터 전달 코드 구현
5. Source Transition Started-Destination Appeared
Adaptive Segue
- 상황에 따라 적합한 방식으로 바뀌어 적용되기 때문에 적응형 segue라고 부른다.
![](https://velog.velcdn.com/images/rudin_/post/96caaf43-62e2-46f3-b681-33ae77e0809f/image.png)
- Push
- Navigation Controller에 임베드 되어있을 시 기본 방식
- Replace
- Modal
- Popover
- 아이폰에서는 모달 방식이 기본이지만, 아이패드에서는 팝오버가 기본 방식
Custom Segue
UIStoryboardSegue 를 서브클래싱
참고글
Unwind Segue
- segue는 단방향 트랜지션만 처리할 수 있다.
- 즉, destination 에서 source로 돌아갈 수 없다.
- 반대로 연결이 가능하긴 하지만, 그건 다른 segue인 것
- 이전 화면으로 돌아가는 것을 이
unwind segue
로 구현하면 된다.
- [참고글]
Push Segue
![](https://velog.velcdn.com/images/rudin_/post/678bd643-182c-4987-b02a-28995cde2167/image.png)
- segue를 선택 시 연결되어있는 트리거가 강조된다.
![](https://velog.velcdn.com/images/rudin_/post/acaa6530-4bcd-42f4-bd0e-345bd90271bc/image.png)
- 만약 segue의 종류를 바꾸고 싶다면 인스펙터의 kind탭에서 설정 가능하다.
![](https://velog.velcdn.com/images/rudin_/post/a257bfa5-4000-460e-b94f-625081b88983/image.png)
실행 화면
![](https://velog.velcdn.com/images/rudin_/post/dc92aa49-e7c5-474a-9f28-1b845952e5a8/image.png)
Navigation Controller
에 임베드되어있지 않으면 모달로 표시된다.
Replace Segue
![](https://velog.velcdn.com/images/rudin_/post/83ceca8b-736f-4a71-99ca-41b99da99484/image.png)
실행 화면
![](https://velog.velcdn.com/images/rudin_/post/411e159d-257c-4362-ac83-782488cc3f14/image.png)
split view
에 임베드되어있지 않으면 모달로 표시된다.
Modal Segue
![](https://velog.velcdn.com/images/rudin_/post/d3a155ea-adc5-49a9-bb48-1c5dc7f35265/image.png)
![](https://velog.velcdn.com/images/rudin_/post/96b4bfd5-220b-4549-961e-a73698f8425a/image.png)
- 인스펙터를 보면 Presentation과 Transition이 추가된다.
- 새로운 화면을 표시하는 방식과, Transition을 선택 가능
실행 화면
![](https://velog.velcdn.com/images/rudin_/post/fd2da345-bfa1-4fb5-83bc-ff0915849343/image.png)
Popover Segue
![](https://velog.velcdn.com/images/rudin_/post/9248e152-24cf-4733-8c4c-d7aac83d0c5d/image.png)
![](https://velog.velcdn.com/images/rudin_/post/7ae70238-4c10-4b51-89ac-2ebf849ed9a2/image.png)
- 화살표의 방향과, 앵커를 설정하는 옵션이 추가된다.
실행 화면
![](https://velog.velcdn.com/images/rudin_/post/4de379c6-6bea-40c1-841e-7ea2788ac57f/image.png)
- 아이폰에서는 모달과 동일하다.
- 스플릿뷰라면 뷰를 교체하고, 나머지는 modal 방식으로 표시
Segue의 동작 방식
iPhone
Push
: Navigation Controller에 임베드되어있지 않을 시 모달과 동일
Replace
: Split view가 아닐 시 모달과 동일
Modal
Popover
: iPhone에서 사용 시 모달과 동일
iPad
Push
![](https://velog.velcdn.com/images/rudin_/post/8688d6b0-20e8-4245-90b3-6c3e41ce7103/image.png)
Form sheet
방식
- 화면 전체를 채우는 것도 가능하나, 아이패드에서는 form sheet가 기본
Replace
![](https://velog.velcdn.com/images/rudin_/post/ba091199-83ab-470b-a7bb-b62d79d7f126/image.png)
Modal
![](https://velog.velcdn.com/images/rudin_/post/218a18d6-3247-4009-8398-24dba26204c3/image.png)
Popover
![](https://velog.velcdn.com/images/rudin_/post/9cdc4933-7519-4942-8e57-9978d52b9881/image.png)
- Popover를 표시한 컨트롤러를 앵커라고 한다. 여기서는 버튼.
- 앵커의 위치와 segue의 속성 값에 따라 꼬리표가 표시되는 방향이 달라진다.
Navigation Controller
![](https://velog.velcdn.com/images/rudin_/post/9b7b0e47-82c4-45c3-80f9-17ef350745f6/image.png)
- 뷰 컨트롤러를 Navigation Controller로 임베드
Push
![](https://velog.velcdn.com/images/rudin_/post/7cb487f9-5efc-451c-8014-eb4cfe307642/image.png)
- Back 버튼을 누르면 Pop된다.
- Navigation Controller Stack에 Push한다고 함
- iPad도 동일
나머지는 동일