제목이.. 길다 🥲
뷰를 쌓는 방법이 크게 2가지가 있는데 push, present로 나눌 수 있다.
push는 navigation controller를 감싸고 있는 뷰에서 가능하고, present는 그렇진 않지만 present위에 뷰를 push 하는건 불가능하다.
push -> navigation controller로 감싼 뷰 위에만 가능
present -> 그냥 뷰 위에 가능
아무튼 이런 개념을 전제로 하면 present한 뷰 위에는 push가 불가능하지만, present한 뷰를 navigation controller로 감싸면 그 위에 push가 가능하다.
내가 궁금했던 상황은 다음과 같다
VC1에서 VC2를 Push하던 중 Navigation controller를 감싼 VC3 Present를 하여 VC4와 VC5를 Push 하였는데 VC5에서 이벤트를 발생시키면 VC2위에 VC3가 Push되는지이다.
결과적으로 뷰를 push하는 과정에서 이전 뷰에 접근하여 push 하는 것은 가능하다.
생각했던대로 VC5에서 Notification을 통해 알려주니 VC2위에 뷰가 쌓인다.
그러면 이런 상황은 어떨까?
present없이 하나의 navigation controller에 push를 쭉 하다가 VC5에서 VC2에 접근해서 뷰를 쌓는 방법이다.
결과화면은 다음과 같다.
이벤트를 발생시키니 해당 뷰 위에 쌓이는게 아닌 현재 뷰 위에 쌓이는 것을 확인할 수 있다.
결국 서로 다른 navigation controller라면 서로 독립적으로 생각할 수 있고, 옵저버를 통해 이전 뷰에 접근해 뷰를 쌓을 수 있다.
코드는 요기! -> https://github.com/hililyy/ios-practice/tree/main/PushPresentPractice
'iOS' 카테고리의 다른 글
[iOS] PageViewController 사용하기 (0) | 2023.05.18 |
---|---|
[iOS] ReactiveX란? / RxSwift 기초 익히기 (0) | 2023.05.08 |
[iOS] 코드로 화면 구성하기 (0) | 2023.04.20 |
[iOS] xcode Vary for Traits (0) | 2023.03.28 |
[iOS] 델리게이트 패턴 (Delegate Pattern) (0) | 2023.03.18 |