자 생각해보자
내가 회원가입하는 로그인 기능을 구현중인데, alert로 확인을 클릭하면 회원가입 성공을 주고 그 화면에 남아있으면 무언가 이상하겠지?
뭔가 다음 진행과정으로 흐름이 계속 이어져야 하는데 프로필 화면으로 돌아가는거, 근데 쉽게 생각해서 이전 화면으로 돌아가면 돼
그러면 확인 눌렀을때 completion 부분에
self.navigationController?.popViewController(animate:false) 로 하면 간단히 되겠지?
그런데 show 타입으로 이미 나는 화면 전환을 했으니 돌아갈때도 네비게이션 컨트롤러를 이용해야만 한다는 문제점이 발생해.
그럼 어떻게 해야할까?
이 문제에 대해서 상세하게 이야기 하기 전에
우리는 앱을 구현하다 보면은 이전 화면이 아니라 더 이전 화면으로 돌아가야 하는 일이 분면히 존재해.
이동 경로 어디쯤엔가 있는 중간 경로로 돌아갈때도 있으니까 이 같은 경우에 모두 적용할 수 있는 범용 기능을 제작해야해
이게 바로 unwind 세그웨이야
우리는 근데 이 예제에서 프로그래밍 버전으로 볼건데 우선 그림으로 순서도를 대략 이해해보자
이때 backProfileVC 는 스토리 보드에서 연결한 것이 아니라 그냥 우리가 프로그래밍으로 작성한 것이다.
그러니까 저건 어떠한 버튼이랑도 연결된게 아니라 그냥 IBAction으로 작성되었다는 말이다.
이 메소드는 아무일도 하지 않는다
코드를 작성한 추가한 곳은 그림A에서 두번째 화면(프로필 하면)에 코드를 작성하지만 세번째 화면(신규 계정 등록씬)에 화면 작업을 한다는 점이 좀 특이하다.
왜 이렇게 하냐면 화면 복귀용 세그웨이는 목적지 기준으로 생성하는게 아니라 출발지 기준으로 생성하는 것이 원칙이기 때문에 화면 복귀용 세그웨이를 만들고 있는 것이다. 즉, 출발지가 신규 계정 등록화면임으로 언와인드 세그웨이 역시 이 화면에서 정의해야 맞다!
이렇게 설정하면 스위프트 코드에서 작성한 화면 복귀용 세그웨이를 호출할 수 있다.
여기서 주의할 점은 identifier 부분에 꼭 함수명과 같지 않아도 되는데, 아래 그림을 보면
self.alert는 두번째 매개변수도 completion 가지고 있다. 왜 completion이 되냐면
alert 처리를 조금 통합하여서 하였는데 아래 코드를 보자.
'Archive > 꼼꼼한 재은씨 시리즈' 카테고리의 다른 글
토큰 갱신과 OAuth 2.0 인증 (0) | 2021.04.24 |
---|---|
[iOS14] 키 체인(key Chain) (0) | 2021.04.23 |
Alamofire 라이브러리 ( + CocoaPods 개념) 설치 및 사용법 (0) | 2021.04.23 |
[iOS14] ATS와 관련하여 (0) | 2021.04.23 |
JSON 학습정리 (0) | 2021.04.23 |