라티의 작은 일기장

[17일차] [LED 전광판 앱] UINavigationController 본문

Swift

[17일차] [LED 전광판 앱] UINavigationController

코드라티 2023. 3. 8. 23:33

어우... 웃풍을 맞으며 잤더니 인후통 + 약간의 몸살이 와버렸다.. 이 글을 읽는 분들은 환절기 조심하시길...

뭐, 아프거나 말거나 Swift 공부는 계속 된다.

 

이번 시리즈는 LED 전광판 앱 개발이다. 설정 화면에서 LED 전광판에 표시할 문자열과 폰트에 대한 설정을 해주면 그대로 화면에 표시해주는, 역시나 간단한 앱이다. 하지만 이번 앱에서는 화면(View)이 전환되는 기능이 있어서 또 새로운 것을 배우게 될 것 같다.

 

우선은 UINavigationController 부터 배워보자.

이것에 대해 이해하려면, Content View Controller와 Container View Controller에 대해 알아야 한다.

Content View Controller?

화면을 구성하는 뷰를 직접 구현하고, 관련된 이벤트를 처리하는 뷰 컨트롤러이다. 한 마디로 단일 화면에 대해 UI와 기능을 담당하는 컨트롤러인 셈이다.

 

Container View Controller?

하나 이상의 Child View Controller를 가지고 있어서 그것을 관리하고, 레이아웃과 화면 전환을 담당하는 컨트롤러이다.

화면 구성과 이벤트 관리는 Child View Controller(Content View Controller)에서 담당한다.

대표적으로는 Navigation Controller와 TabBar Controller가 있다.

 

우리가 이 개념에 대해서 쉽게 이해하려면, 당장 아이폰의 설정 앱을 들어가보면 된다.

 

우리가 아이폰의 설정 앱을 눌러서 최초로 실행할 때 처음 마주하게 되는 화면은 Content View Controller이다.

그런데 특정 설정 메뉴를 누르면 해당 설정에 관련된 세부 설정을 할 수 있는 새로운 화면을 보게 된다.

이 때 설정 메뉴를 눌러서 세부 설정 화면으로 전환 시키는 역할을 하는 것이 Container View Controller라고 생각하면 되는 것이다.

그리고 전환되어 우리가 새롭게 마주하는 세부 설정 화면 자체는 Content View Controller가 된다.

 

설정 앱의 경우 Navigation Controller가 쓰였는데, 자료구조를 잘 공부한 우리는 한 가지 자료구조를 떠올릴 수 있다.

세부 설정 화면으로 들어가고 난 뒤, 뒤로 가기를 누르면 다시 본래의 화면으로 돌아오지 않는가?

 

 

오? 마지막으로 본 화면이 제일 먼저 메모리에서 제거되는 구조네? -> LIFO(Last-In-First-Out)네? -> 스택 구조!

라는 흐름으로 생각해 볼 수 있을 것이다.

 

마지막으로 Navigation Bar에 대해 알아보자.

 

출처 : https://developer.apple.com/design/human-interface-guidelines/components/navigation-and-search/navigation-bars/

Navigation Bar는 사용자가 Navigation Controller를 통해 자유롭게 Content View들을 이동하고, 기본적으로 제공하는 Back 버튼을 통해 Navigation Controller의 계층 구조에 따라 이전에 보고 있던 View로 이동할 수 있게 도와주는 UI 컴포넌트이다.

 

기본적으로 BackItem Title, TopItem Title과 같이 Bar 내부 Item의 이름을 설정하는 Title과,

Navigation Bar의 맨 윗 부분에 위치한 Prompt, 그리고 Navigation Bar의 기능을 담당하는 Item으로 구성되어 있다.

 

 

 

패스트캠퍼스 바로가기 : http://bit.ly/3Y34pE0

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

> 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.