Unwind Segue
1. 돌아갈 뷰 컨트롤러에서 Unwind segue와 연결할 액션 메소드를 구현
![](https://velog.velcdn.com/images/rudin_/post/acca2382-1338-4d54-aefd-c5426ca597da/image.png)
![](https://velog.velcdn.com/images/rudin_/post/3bd2e69b-a505-4649-9c69-d64a1ae0089f/image.png)
주의
- unwind 메소드의 이름은 겹치지 않게 지어야한다. 다른 vc에서 똑같은 이름을 사용하면 빌드 에러는 발생하지 않지만, Exit에서 segue 연결 시 하나만 표시된다.
2. unwind할 vc에서 Exit으로 segue를 연결
![](https://velog.velcdn.com/images/rudin_/post/8a0ec7f7-b18c-4ce2-8409-dac87ca7b2fa/image.png)
![](https://velog.velcdn.com/images/rudin_/post/d9007e1a-9369-4698-95bf-46e7122ee49f/image.png)
실행 제어와 이벤트 처리
- unwind는 source와 destination에서 각각 제어 가능하다.
- shouldPerformSegue, canPerformUnwindSegueAction에서 모두 true를 리턴해야 동작한다.
![](https://velog.velcdn.com/images/rudin_/post/cafef9cf-bf6c-4f0c-959f-06d2fb6a32c8/image.png)
- 기본적인 segue와 동일한 메소드를 사용한다.
source
에서 제어하면 된다.
unwind(for: towards:)
![](https://velog.velcdn.com/images/rudin_/post/929966b9-42cf-4a06-8c30-2b7e9b6490fe/image.png)
- unwind segue가 실행되고 대상 뷰 컨트롤러로 전환될 때 실행
![](https://velog.velcdn.com/images/rudin_/post/bc3bb483-2a21-4ffe-892d-e7bd163654a1/image.png)
- unwind 액션을 실행할 수 있을지 결정하는 메소드
- true가 리턴되면 unwind 액션이 실행된다.
destination
에서 제어하면 된다.
실행 순서
Source
: FirstVC
Destination
: ThirdVC
![](https://velog.velcdn.com/images/rudin_/post/50a3613b-c396-439d-9d86-909544131431/image.png)
Unwind Segue에서 데이터 전달하기
예시
ValueVC에서 text를 입력하면 해당 text를 이름으로 하는 심볼로 FirstVC의 이미지를 대체
ValueVC
![](https://velog.velcdn.com/images/rudin_/post/94848186-c2d6-4d8c-8384-680a0745136d/image.png)
FirstVC
![](https://velog.velcdn.com/images/rudin_/post/a214e355-a272-4f8a-8589-073d236993fa/image.png)
- 참고로, ValueVC의 value와 prepare 메소드를 삭제하고, FirstVC의 unwind에서 let value = vc.valueField.text를 해도 무관
결과
![](https://velog.velcdn.com/images/rudin_/post/2787cc50-f42e-46ca-b139-a12310daa288/image.png)
swift 입력
![](https://velog.velcdn.com/images/rudin_/post/62ab2e37-4af1-419f-bc87-d820c9e516db/image.png)
리소스정리 작업
unwind(for: towards:)
에서 작업