티스토리 뷰
안녕하세요 :]
간혹 개발을 하다 보면
현재 화면을 닫음과 동시에 다른 화면을 열어야 하는 경우가 생기더라고요.
그 경우도 여러 가지 케이스가 있는데
제가 경험한 케이스를 공유해보도록 하겠습니다.
1. dismiss 후 present 하기
보통 dismiss에 있는 컴플리션 핸들러를 사용해서
present 코드를 입력합니다.
자, 위의 코드가 정상적으로 실행이 될까요??
정답은 "안된다"입니다.
자기 자신인 FirstViewController에서 dismiss를 하고 난 뒤
FirstViewController에서 SecondViewController를 present 하고 있습니다.
이미 FirstViewController는 사라졌는데
SecondVIewController를 present 할 수 있을 리가 없겠죠?
그렇기 때문에 위의 코드처럼
FirstViewController를 present 한 pvc를 찾고
pvc에서 present를 해줘야 합니다.
2. rootViewController까지 dismiss 하고 present 하기
이 같은 경우는
화면의 스택이 많이 쌓여있는 상태에서
많이 찾게 될 방법인 것 같습니다.
아래의 코드는
본인인증 VC를 present 하고
본인인증이 끝나면 HomeVC로 이동하게 되는데,
더 이상 사용하지 않는 본인인증 VC를 dismiss 하고
HomeVC를 띄우는 상황으로 가정하도록 하겠습니다.
(본인인증 VC 뒤에도 처리 방침 동의와 같은
필요 없는 VC들이 많이 쌓여있다고 가정하겠습니다.)
첫 번째 줄을 보시면
rootViewController까지 전부 dismiss 시켜주는 코드입니다.
그리고 rootViewController의 dismiss completion에서
띄울 VC를 생성하고
appDelegate를 찾아서
rootViewController의 present를 실행하게 됩니다.
그러면 rootViewController와 현재 VC 사이에 있던
모든 VC들이 dismiss 되고
rootViewController는 새로운 VC를 present 하게 됩니다.
그 결과,
rootVC -> AVC -> BVC -> CBC -> DVC 였다면
AVC, BVC, CBC, DVC가 전부 dismiss 되고
rootVC -> HomeVC인 상태가 되는 겁니다.
제가 원하는 코드가 위의 코드였는데
생각보다 머리로 잘 안 그려져서
정말 삽질을 많이 했네요...
이번 삽질을 통해서
presentingVC, presentedVC에 대한 것도
다시 한번 정리해볼 수 있었네요 ㅎㅎ
감사합니다.
'개발 > iOS' 카테고리의 다른 글
[Swift] 공유하기 내용 한국어로 나오게 하기 !! (ActivityViewController localization) (433) | 2020.02.16 |
---|---|
[swift] Firebase 애플로그인 에러(Nonce is missing in the request.) (3) | 2020.01.13 |
[Swift] 문자열 나누기 (1) | 2020.01.04 |
[Swift] FCM(Firebase Cloud Messaging) 사용하기! (14) | 2019.11.12 |
[iOS] iPhone 점유율 확인하기(iOS Target Version 선정하기) (1) | 2019.11.08 |
- Total
- Today
- Yesterday
- Sign in with Apple
- 공유하기 한국어
- ModalPresentaionStyle
- UITextField 멀티라인
- iOS13
- signinwithapple
- Swift GoogleMap
- ActivityViewController
- 카카오 로그인
- error
- 문자열나누기
- TextField Padding
- SWIFT
- 앱커넥트
- swift fcm
- 애플로그인
- Xcode
- presentingViewController
- ios
- xcode11
- TableView
- GIF
- Android
- 키크론K2
- swift 문자열
- 안드로이드
- Kakao
- firebase
- Swift Target Version
- 앱스토어 커넥트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |