티스토리 뷰

앱개발에 있어 화면전환, 관리는 매우 중요합니다.

최근 공부한 기술 NavigationTree와 NavigationStack에 관한 정리글입니다.

 

1. Tree구조

트리구조입니다.

자료구조 트리와 같은 모양입니다.

3번의 화면이 사용자에게 노출되려면, 1번 화면이 먼저 노출되어야 합니다.

또한 5번 화면이 노출되려면 3번화면이 먼저 노출되어야 합니다.

 

어떠한 화면이 노출되기 전, 선행되어 노출되어야 하는 화면을 강제할 수 있는 장점이 있습니다.

하지만 독립적으로 7번화면만 보여주고 싶다!는 의도라면 트리구조와는 어울리지 않을 수 있습니다.

- (1, 4 화면이 강제적으로 표출이 되어야 하기 때문)

 

해당 구조는 다음과 같은 딥링크에서 유용하게 사용할 수 있습니다.

예) 인스타그램 - 특정 게시글의 새로운 댓글 딥링크

1. 인스타그램의 메인 화면이 노출된다.

2. 해당 댓글이 달린 게시글 화면이 노출된다. 

3. 해당 댓글의 상세화면이 노출된다. ( 목적지 )

 

 

2. Stack구조

다음은 Stack구조입니다.

Stack구조는 Tree구조와 다르게 선행되어야 하는 화면 조건없이 목표로 하는 화면만 바로 노출할 수 있습니다.

해당 과정이 자료구조Stack과 같은 모양이라 Stack구조라고 합니다.

1번은 Root화면입니다.

1번은 자식뷰들에 대한 정보를 모두 갖고 있습니다.

2번화면에서 화면전환 이벤트를 1번에게 보내고, 1번화면은 이를 확인하고 판단하여 자신의 자식 중 N번을 화면을 노출합니다.

2번화면 위에 N번화면을 쌓을 수 있고, 2번화면을 Pop한 뒤 해당 계층에 N번화면을 쌓을 수 있습니다.

 

딥링크에서 언어 설정 화면을 표출하고 싶습니다.

해당 화면은 선행될 화면 없이 언어 설정 화면만 노출되는 의도입니다.

SwiftUI 기준 Stack구조의 단점은 iOS16.0부터 사용가능합니다.

 

 

- 적용.

현재 사내 서비스의 기획은 Stack구조쪽에 더 어울리기에 Tree구조에서 Stack구조로 리펙토링 중에 있습니다.

현재 일부분 작업하였지만, DeepLink, 화면전환 로직에서 생산성이 크게 올라갔습니다.

TCA와 함께 사용하면 딥링크 시 화면전환이 전부 되지 않는 일부 버그도 있어 현재는 Task.sleep으로 임시처리 해두기도 하였습니다.

 

감사합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/09   »
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
글 보관함