내 앱은 팔로워 or 팔로잉을 탭 했을 때, 해당 탭에 맞는 화면이 보이게끔 화면전환이 들어가야했다.
viewMode 열거형을 통해 값을 넘겨서 해당 탭에 맞는 화면이 보이게끔 구현했는데,
이 때 이것저것 실험하면서 알게된 부분을 작성하고자 한다.
컨테이너뷰로 자식VC 을 넣어서 사용하는 경우,
ViewDIdLoad 는 가장 내부에 있는 자식이 먼저 실행된다.
내 앱은 FollowVC → FollowTabVC (Tabman 사용) → FollowerVC or FollwingVC 형태로 되어있는 형태임
FollowerVC 가 먼저 실행되는 것을 확인할 수 있다.
(사실 2번은 자식이라기 보다는 FollowVC 내부 인스턴스 프로퍼티입니다)
근데!
모든 print 를 init 구문에 넣어서 순서를 확인해보면,
2 → 1 → 3 의 형태로 출력이 된다????
이게 왜 그런가 생각해봤는데,
초기화가 발생할때 안에 있는 클래스의 인스턴스가 먼저 초기화 되는건 맞다.
그러니 1번을 호출할때 2번이 먼저 호출되는건 맞는데,
그럼 왜 3번이 가장 먼저 호출이 안되는건가?? 싶었지만
2번 TabMan 을 사용하는 VC 는 클래스의 인스턴스 프로퍼티가 아닌,
VIewDidLoad 에서 자식VC 를 생성하는 메서드를 호출하기 때문에 순서가 가장 뒤로 밀리는 것이었다.
자, 그러면 이 내용을 숙지한 상태로 구현해봅시다.
처음으로 탭했을 때, 2번 VC 를 먼저 초기화 시켜서 값을 갖게 만들고,
3번이 뜨기 전에 탭의 초기 인덱스를 설정해버리면 끝!
결론은 VIewDidLoad, init 시점을 잘 확인하고 컨트롤 합시다,,
'iOS' 카테고리의 다른 글
SwiftUI + TCA 튜토리얼 1 - Feature + View (0) | 2024.05.14 |
---|---|
단락평가(short-Circuit Evaluation) (0) | 2024.05.07 |
서버에서 주는 에러메세지도 디코딩으로 받아보기 (0) | 2024.04.24 |
Kingfisher - Error Handling (0) | 2024.04.15 |
Custom Modal · Alert (1) | 2024.03.26 |